Matlab编程技巧:MBD中常用的Matlab函数

在MBD(基于模型开发)中,需要掌握一些常用的函数。这些函数经常用于搭建集成环境、生成手写代码、工具链开发等。恰当地使用函数编写Matlab脚本可以提高MBD工作的自动化程度,提高工作效率。

本文会分类列举博主工作中常用的函数,并简要说明其应用场景以及一些使用心得。同时也欢迎有其他项目经验的博友在博客下留言补充。

1 路径处理

Matlab中路径的概念十分重要,因为脚本在处理各种文件或者调用函数、模型的时候,都会涉及到路径。

关于Matlab的路径,博主也踩过很多坑,总结起来大致如下几点:
1)尽量少使用当前路径,而是使用绝对路径
2)调用共享路径容易出一些奇怪的bug,所以尽量把共享路径映射为本地驱动器;
3)路径中尽量不要出现中文字符,尽管Matlab也能支持中文路径。

路径处理常用函数如下:

函数功能
addpath将文件夹添加至搜索路径
rmpath将文件夹从搜索路径移除
genpath生成路径与子路径
mfilename返回当前m脚本路径
fileparts拆分路径为文件夹路径、文件名和后缀
fullfile将文件夹路径和文件名组合成文件路径
cd切换当前路径

2 字符串处理

字符串类型在Matlab脚本中非常常见,譬如路径名、文件名、文件内容、表格单元格内容等都是字符串。另外很多Matlab函数的参数也是字符串。

注意,在脚本中尽量少用中文字符串。虽然Matlab对中文的兼容性非常好,但是Matlab经常会和其他的工具链交互时,其他工具容易出现中文兼容性不好的问题。

字符串处理常用函数如下:

函数功能
strcat字符串拼接,也可以使用方括号[]拼接
strcmp字符串比较
strrep替换字符串中的一部分
strfind返回一个字符串在另一个字符串中的位置
split分割字符串
contains判断一个字符串是否包含另一个
newline相当于换行符
regexp正则表达式提取

3 表格处理

表格是工作中最常见的文档形式。如果项目团队中约定好表格的内容,并且按照某种要求规范填写,就可以通过Matlab脚本来读取并使用表格中的信息。例如表格中可以定义某些接口变量,亦或是某些需要处理的文件和需求。

应用Matlab进行表格处理的时候,往往也会遇上不少坑:
1)常见的一种是不规范的表格填写。例如单元格内多了个空格符或者回车符,容易在字符串处理的时候出错;
2)表格中如果合并单元格,用matlab函数读取后会返回若干空白符,处理的时候会有些麻烦。因此尽量少使用单元格合并,也尽量不要将单元格空着。
3)如果表格的列顺序变更,可能会导致原先的Matlab脚本处理了错误的列而报错。

表格处理常用函数如下:

函数功能
xlsread常用的表格读取函数,返回Cell
xlswrite写入表格函数
readtable读取表格文件,返回Table
xlsfinfo返回表格文件中的工作表名

4 文本文件处理

可以用记事本或Notepad++打开的文件都算是文本文件,包括txt文件、c文件、头文件、a2l文件等。

工作中经常需要读取文本内容,再通过正则表达式解析出其中的关键信息。或者根据某些规则生成文本文件,例如生成具有一定规律的手写代码。

文本文件处理常用函数如下:

函数功能
fopen打开文件
fclose关闭文件
fscanf读取文件内容
fprintf写入文件内容

5 Simulink模型处理

通过Matlab脚本可以批量处理Simulink模型中具有共同特性的模块,而且Matlab中提供的API几乎可以操作所有Simulink中手动操作的部分。

Simulink模型处理函数详见博主前几章博客,相关函数:

函数功能
find_system搜索出符合条件的模块、信号线
get_param获取模块指定参数的值
set_param设置模块指定参数的值
add_block创建模块
add_line创建信号线
load_system将Simulink模型载入内存
open_system打开Simulink模型窗口
close_system关闭Simulink模型(窗口和内存)
simSimulink仿真

6 执行DOS命令

有的情况下,调用的工具需要通过命令提示符来执行,譬如一些a2l相关操作和git工具的相关指令。在Matlab中使用函数执行DOS命令的时候,要注意当前路径的切换。

执行DOS命令的函数如下:

函数功能
dos执行dos命令并返回结果
system执行操作系统命令并返回结果
winopen在Matlab外执行批处理文件

7 生成代码

除了在Simulink界面选择生成代码,也可以用Matlab函数,前提是Simulink已经配置好了。生成代码函数是实现脚本自动代码生成的关键。

生成代码函数如下:

函数功能
rtwbuild通过模型生成代码

8 调试Matlab脚本

通常,调试Matlab脚本都是在编辑器加上断点,或者设置条件断点。但是经常遇到脚本出错又很难定位到错误的位置的情况,或者即便是定位到了,也要重新跑完错误之前的代码在停留到断点处。

其实,可以通过在Matlab交互式界面中输入以下命令:

>> dbstop if error

这样的话如果脚本运行出现错误,Matlab可以直接停留在错误处调试。

>>返回个人博客总目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值