【Matlab 控制】批量修改大型 Simulink 模型中模块的属性

在大型Simulink建模中,需要进行某个模块的属性修改是很麻烦的事情,除非您对整个模型相当了解,并且能够快速定位每一个模块。但是在团队合作中,您不可能对所有模型都很了解。

比如在飞机仿真建模过程中,其中的气动库计算需要使用到大量的查表(Lookup Table)插值模块,如果想一次性修改所有 Lookup Table 的 Index Search Method 参数。关于飞机的东西不能说的太多,你懂的,本文使用 MATLAB 自带的 f14 模型,演示如何修改大型 Simulink 中 Gain 模块的采样时间(Sample Time)。

更多Simlink实用技巧请猛烈点击这里http://www.matlabsky.com/forum.php?mod=forumdisplay&fid=17&filter=typeid&typeid=785

一、通过Simulink自带的搜索

估计大部分人都是使用这个方法的,也是最容易的。但是有一个致命的缺点,就是必须手动一个一个的修改!

(1)通过菜单Edit→Find…打开查找对话框(当然也可以使用Ctr+F)
在这里插入图片描述

(2)Simulink搜索对话框包含很多功能,如果能够灵活使用,效率还是挺不错的。在搜索结果列表中,可以直接双击打开相应的模块,还有右击直接编辑属性。更多功能大家可以自己慢慢摸索!
在这里插入图片描述

(3)使用这个查到对话框的时候,很多同学会发现,在搜到列表中没法多选,每次只能编辑一个模块!如果想将某个子系统下所有Gain的采样时间修改为0.1,那您只能手动一个一个愚公移山了!

二、通过命令行进行搜索替换

Simulink 有一个很大特色,就是所有通过鼠标键盘的操作都可以使用命令行完成,这个就便于进行批量建模、修改、仿真,调试等。很多人看到代码就晕,心想使用Simulink 查找对话框就可以完成了,还这么费心的使用那些破命令。但是有时代码在代替人工操作时是具有更高的效率。

在命令行进行 Simulink 搜索主要用到 find_systemhilite_sysytem 函数,而修改参数则使用到 set_param 函数,下面就尝试下这对组合吧:

在这里插入图片描述

% 不知道find_system每个参数的意义,请查看帮助文档
blks=find_system(bdroot,'LookUnderMasks','all','FollowLinks','on','blockType','Gain');
for ii=1:length(blks)
    % 高亮显示指定模块
    hilite_system(blks{ii});
    % 不知道模块属性名,请搜索Block-Specific Parameters
    set_param(blks{ii},'SampleTime',0.1);
end

find_system的帮助文档如下,其实学会搜索和查看帮助是一种品质!
在这里插入图片描述

Gain增益模块的对话框参数如下,想了解其他模块,请在帮助文档中搜索Block-Specific Parameters

在这里插入图片描述

三、使用Model Explorer编辑属性

Model Explorer具有很强的编辑功能,能够快速、高效、批量的进行变量定义,属性修改,模型调整等。下面的讲解过程,看起来视乎有些繁琐,但真说明了Model Explorer的功能强大。

(1)首先是打开Model Explorer(什么不知道如何打开,那不妨看看这个

(2)在Model Hierarchy目录树中需要搜索的模型或子系统,在Seach下拉菜单中选择by Block Type,Type下拉菜单选择Gain,然后点击搜索!

(3)中间的面板中列出了搜索到的Gain模块,将Column View切换到Default,然后在Name标题栏右击,选择Insert Path,这样模型的路径就会显示在列表中。点击Path连接就可以直接定位到模块。

在这里插入图片描述

(4)很多细心同学可能发现,Model Explorer没有列出系统下所有的Gain模块,而只有指定系统最顶层的Gain。这是因为Model Explorer默认不搜索子系统。只要在列表中空白处右击,选择Show Current System and Below即可。
在这里插入图片描述

(5)当您在列表中,选择任意一个模块时,右侧会出现该模块属性面板,您可以根据需要调整。但是当选中选中多个模块时,右边的设置面板就变灰,不能允许修改了(这是一种保护手段,防止意外修改模型)。要想一次性修改全部Gain模块的Sample Time参数,需要如下操作:

●点击Column View右边的Show Details,在Find Properties里面输入sample,选择SampleTime添加到右边的Column Name中

在这里插入图片描述

●然后在模块列表中,使用Ctr/Shift + 左击,选择多个模块,直接编辑刚才添加的SampleTime列,所做的修改将应用到所有选中的模块。
在这里插入图片描述

Ref: 批量修改大型Simulink模型中模块的属性

带学习: GUI界面实现批量修改Simulink模块参数名称

带学习: Matlab编程技巧:通过脚本获取/修改Simulink模块参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值