概述
在MBD(基于模型开发)中,需要掌握一些常用的函数。这些函数经常用于搭建集成环境、生成手写代码、工具链开发等。恰当地使用函数编写Matlab脚本可以提高MBD工作的自动化程度,提高工作效率。
本文会分类列举博主工作中常用的函数,并简要说明其应用场景以及一些使用心得。同时也欢迎有其他项目经验的博友在博客下留言补充。
文章目录
- 1 路径处理
- 2 字符串处理
- 3 表格处理
- 4 文本文件处理
- 5 Simulink模型处理
- 6 执行DOS命令
- 7 生成代码
- 8 调试Matlab脚本
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模型(窗口和内存) |
sim | Simulink仿真 |
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可以直接停留在错误处调试。
>>返回个人博客总目录
最后
以上就是温婉猫咪为你收集整理的Matlab编程技巧:MBD中常用的Matlab函数1 路径处理2 字符串处理3 表格处理4 文本文件处理5 Simulink模型处理6 执行DOS命令7 生成代码8 调试Matlab脚本的全部内容,希望文章能够帮你解决Matlab编程技巧:MBD中常用的Matlab函数1 路径处理2 字符串处理3 表格处理4 文本文件处理5 Simulink模型处理6 执行DOS命令7 生成代码8 调试Matlab脚本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复