Matlab编程技巧:MBD中常用的Matlab函数
在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函数相关推荐
- Matlab编程技巧:打开模型时加载数据字典
本文研究通过回调函数,在打开模型时加载数据字典到工作空间中. 文章目录 1 问题引入 2 简单例程 2.1 模型配置 2.2 数据字典表格 2.3 创建脚本 3 效果演示 4 总结 1 问题引入 在& ...
- Matlab编程技巧:通过脚本获取/修改Simulink信号线参数
上一篇博客<Matlab编程技巧:批量获取/修改Simulink模块参数>中,说明了如果通过matlab脚本批量获取/修改Simulink模块参数.具体方法可以参考https://blog ...
- Matlab编程技巧:通过Matlab脚本批量修改Simulink模块的大小,背景颜色
Matlab编程技巧:通过M脚本修改Simulink模块的大小,背景颜色 M脚本修改Simulink模块的大小,背景颜色 选取一个Simulink模型,获取模块参数,在命令行输入代码: sysBolc ...
- TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作
文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作 实验要求 知识点 实验内容 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同 ...
- matlab在锁具装箱问题中的应用,matlab在锁具装箱问题中的应用
matlab在锁具装箱问题中的应用 Matlab在锁具装箱问题中的应用某厂生产一种弹子锁具,每个锁具的钥匙有 5个槽,每个槽的高度从 {1, 2, 3, 4, 5, 6}6个数(单位略)中任取一个,由 ...
- shell编程系列7--shell中常用的工具find、locate、which、whereis
shell编程系列7--shell中常用的工具find.locate.which.whereis1.文件查找之find命令语法格式:find [路径] [选项] [操作]选项 -name 根据文件名查 ...
- php的正则表达式函数,php中常用的正则表达式函数
php中常用的正则表达式函数 * preg_match() * preg_match_all() * preg_replace() * preg_filter() * preg_grep() * pr ...
- java数据类型的转换函数_JAVA中常用数据类型转换函数
JAVA中常用数据类型转换函数: string->byte Byte static byte parseByte(String s) byte->string Byte static St ...
- MySQL中常用日期时间函数及获得
MySQL中常用日期时间函数: 下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DA ...
最新文章
- [故障解决]图文:python启动报错:api-ms-win-crt-runtime-l1-1-0.dll丢失解决
- 利用nginx-status监控nginx服务器状态
- Caffe官方教程翻译(7):Fine-tuning for Style Recognition
- JAVA_OA(十四):SSM练手项目bug-Oracle分页web页面无法转到下一页
- android 全局 socket,学习Android socket通信之如何解决中文乱码
- 修改oracle 安裝參數,oracle 安裝相關參數設定
- 数据库系统的维护与优化(二)
- Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案
- iOS设计模式-适配器
- minheight能继承吗_CSS min-height最小高度max-height最大高度
- charrnn 诗歌_代码不是诗歌,它只是代码
- 标准差和标准误差的区别
- 计算机 工具 文件夹 找不到,电脑附件中的“画图工具”找不到了,怎么办?
- 马云和他的少年阿里 百度云下载
- redis安装和基本数据类型
- 收集爆出cms后台路劲的方法
- 四种电子取证软件的比较
- 其中的文件夹或文件已在另一个程序中打开怎么解决
- java font 字体库,「Font」- 编程字体 @20210209
- 项目管理系统(PMS)