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

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

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

文章目录

  • 1 路径处理
  • 2 字符串处理
  • 3 表格处理
  • 4 文本文件处理
  • 5 Simulink模型处理
  • 6 执行DOS命令
  • 7 生成代码
  • 8 调试Matlab脚本

1 路径处理

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

关于Matlab的路径,笔者也踩过很多坑,总结起来大致如下几点:
1)尽量少使用当前路径,而是使用绝对路径;
2)调用共享路径容易出一些奇怪的bug,所以尽量把共享路径映射为本地驱动器。

路径处理常用函数如下:

函数 功能
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脚本处理了错误的列而报错。笔者在之前的博客中也讨论过这个问题,详见Matlab技巧(一) Excel表格数据导入

表格处理常用函数如下:

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

4 文本文件处理

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

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

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

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

5 Simulink模型处理

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

Simulink模型处理函数详见笔者前几章博客:
Matlab编程技巧:通过脚本获取/修改Simulink模块参数
Matlab编程技巧:通过脚本获取/修改Simulink信号线参数
Matlab编程技巧:通过脚本创建/修改Simulink数据字典
Matlab编程技巧:通过脚本获取/修改Stateflow参数

除此以外,还有一些相关函数:

函数 功能
load_system 将Simulink模型载入内存
open_system 打开Simulink模型窗口
close_system 关闭Simulink模型(窗口和内存)
sim Simulink仿真

6 执行DOS命令

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

执行DOS命令的函数如下:

函数 功能
dos 执行dos命令并返回结果
system 执行操作系统命令并返回结果

7 生成代码

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

生成代码函数如下:

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

8 调试Matlab脚本

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

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

>> dbstop if error

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

>>返回个人博客总目录

你可能感兴趣的:(Matlab编程技巧)