在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. Matlab编程技巧:打开模型时加载数据字典

    本文研究通过回调函数,在打开模型时加载数据字典到工作空间中. 文章目录 1 问题引入 2 简单例程 2.1 模型配置 2.2 数据字典表格 2.3 创建脚本 3 效果演示 4 总结 1 问题引入 在& ...

  2. Matlab编程技巧:通过脚本获取/修改Simulink信号线参数

    上一篇博客<Matlab编程技巧:批量获取/修改Simulink模块参数>中,说明了如果通过matlab脚本批量获取/修改Simulink模块参数.具体方法可以参考https://blog ...

  3. Matlab编程技巧:通过Matlab脚本批量修改Simulink模块的大小,背景颜色

    Matlab编程技巧:通过M脚本修改Simulink模块的大小,背景颜色 M脚本修改Simulink模块的大小,背景颜色 选取一个Simulink模型,获取模块参数,在命令行输入代码: sysBolc ...

  4. TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作

    文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作 实验要求 知识点 实验内容 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同 ...

  5. matlab在锁具装箱问题中的应用,matlab在锁具装箱问题中的应用

    matlab在锁具装箱问题中的应用 Matlab在锁具装箱问题中的应用某厂生产一种弹子锁具,每个锁具的钥匙有 5个槽,每个槽的高度从 {1, 2, 3, 4, 5, 6}6个数(单位略)中任取一个,由 ...

  6. shell编程系列7--shell中常用的工具find、locate、which、whereis

    shell编程系列7--shell中常用的工具find.locate.which.whereis1.文件查找之find命令语法格式:find [路径] [选项] [操作]选项 -name 根据文件名查 ...

  7. php的正则表达式函数,php中常用的正则表达式函数

    php中常用的正则表达式函数 * preg_match() * preg_match_all() * preg_replace() * preg_filter() * preg_grep() * pr ...

  8. java数据类型的转换函数_JAVA中常用数据类型转换函数

    JAVA中常用数据类型转换函数: string->byte Byte static byte parseByte(String s) byte->string Byte static St ...

  9. MySQL中常用日期时间函数及获得

    MySQL中常用日期时间函数: 下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DA ...

最新文章

  1. [故障解决]图文:python启动报错:api-ms-win-crt-runtime-l1-1-0.dll丢失解决
  2. 利用nginx-status监控nginx服务器状态
  3. Caffe官方教程翻译(7):Fine-tuning for Style Recognition
  4. JAVA_OA(十四):SSM练手项目bug-Oracle分页web页面无法转到下一页
  5. android 全局 socket,学习Android socket通信之如何解决中文乱码
  6. 修改oracle 安裝參數,oracle 安裝相關參數設定
  7. 数据库系统的维护与优化(二)
  8. Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案
  9. iOS设计模式-适配器
  10. minheight能继承吗_CSS min-height最小高度max-height最大高度
  11. charrnn 诗歌_代码不是诗歌,它只是代码
  12. 标准差和标准误差的区别
  13. 计算机 工具 文件夹 找不到,电脑附件中的“画图工具”找不到了,怎么办?
  14. 马云和他的少年阿里 百度云下载
  15. redis安装和基本数据类型
  16. 收集爆出cms后台路劲的方法
  17. 四种电子取证软件的比较
  18. 其中的文件夹或文件已在另一个程序中打开怎么解决
  19. java font 字体库,「Font」- 编程字体 @20210209
  20. 项目管理系统(PMS)

热门文章

  1. 已知.bit文件和.ltx文件用Vivado 的 ILA debug调试步骤
  2. A*算法简介-matlab篇
  3. 物流APP开发实现物流行业与互联网完美结合!
  4. Xcode iOS16真机调试包下载安装
  5. 如何解决阿里云 访问不到的问题。
  6. 从影评的角度看《后来的我们》
  7. Linux高级文本编辑器比较:kate vs gedit
  8. 三维智慧仓储与物流园区一体化管控系统
  9. 阿里云的数据风控试用总结
  10. Java 图片添加文字或者logo水印(附代码) | Java工具类