概述
在做比较复杂的系统建模时,某一个参数可能会被用很多功能模块使用。突然有一天,大家觉得这个参数的名称不太合适,需要换一个名字。如果一个模块一个模块改,会浪费很多时间,而且也容易漏掉。如果这个工作交给代码来解决,就会事半功倍。
今天,谈一谈如何批量修改模块参数名称?
假如有下面这样一个模型,名称叫Subsystem。
其子系统内部结构内部如下图。
这里我们重点关注模块参数部分,其他的可以忽略,总共有4个Constant、4个Gain模块。两个Constant模块的参数名称叫ConstPara1,另外两个Constant模块的参数名称叫ConstPara2。两个Gain模块的参数名称叫GainPara1,另外两个Gain模块的参数名称叫GainPara2。
任务一
如果有一天,你的同事评审模型时,发现参数ConstPara1名称有歧义,建议改为NewConstPara1。那么就需要批量修改该参数名称。
这里的工作任务可以分为两步:
1)把参数名为ConstPara1的Constant模块找到;
2)将新的参数名称NewConstPara1赋给上面的模块。
这个任务的代码如下:
constant=find_system('newModel/Subsystem','BlockType','Constant','Value','ConstPara1');for i=1:length(constant);set_param(constant{i},'Value','NewConstPara1');end
这里主要用到find_system、set_param函数。前者是用于寻找待替换参数名的模块,后者用于设置新的参数名。set_param函数之前的文章已介绍过。
find_system(sys, 'c1', cv1, 'c2', cv2,...'p1', v1, 'p2', v2,...),sys定义寻找范围,c1/cv1等成对出现,定义搜寻模块的属性为c1,属性值为cv1。
运行上面代码后,模型变为下图。
两个模块的参数名称从ConstPara1成功变为NewConstPara1(图中红框),且其他模块参数名称保持不变(图中蓝框),实现了我们的任务。
任务二
又过了几天,你的同事继续评审模型时,发现参数GainPara1名称需要修改,建议改为NewGainPara1。
这里的工作任务仍然可以分为两步:
1)把参数名为GainPara1的Gain模块找到;
2)将新的参数名称NewGainPara1赋给上面找到的模块。
这个任务的代码如下:
gain=find_system('newModel/Subsystem','BlockType','Gain','Gain','GainPara1');for i=1:length(gain);set_param(gain{i},'Gain','NewGainPara1');end
运行上面代码后,模型变为下图。
两个模块的参数名称从GainPara1成功变为New GainPara1(图中红框),且其他模块参数名称保持不变(图中蓝框),也实现了我们的任务。
做完两个任务之后,发现Simulink模块的参数名称很奇怪,有的叫Value,有的叫Gain,还有的叫Initial condition,等等。所以,当我们知道需要修改哪些类型模块的参数名称时,可以直接选用对应的参数名称来使用find_system来寻找;当我们不知道有哪个模块用了待修改的参数时,我们可能就需要所有模块类型都使用find_system找一遍。
以上,以Constant、Gain模块参数名称修改为例,简要介绍了批量修改参数名称的方法。每一次批量修改其他的模块参数名称时,都需要手动修改代码,交互方式不太友好,下一篇我们尝试用GUI界面来完成批量修改的任务。
最后
以上就是糟糕眼睛为你收集整理的修改参数_Simulink中怎么批量修改模块参数名称?任务一任务二的全部内容,希望文章能够帮你解决修改参数_Simulink中怎么批量修改模块参数名称?任务一任务二所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复