Simulink 批量更改模块属性

目录

1 思路

2 find_system()

3 get_param()

4 set_param()

5 应用


1 思路

模型搭建过程中,后期往往遇到某种模块的属性配置错误,逐个更改起来十分头大,借用脚本可方便快捷的完成。

 

思路比较简单:

  1. 找到符合的模块;
  2. 更改模块属性。

 

首先介绍几个函数,函数的权威说明还是参考 Mathworks 帮助页面。

2 find_system()

该函数返回对象可以是系统、模块、信号线、接口,甚至注释。

返回的内容为 cell array,有多少个符合的结果就有多少行 cell。

语法:

Objects = find_system(System,Name1,Value1,Name2,Value2,…)

该函数用法灵活,Name 和 Value 可以是模块属性,也可以是函数的一些配置,捡一些常用的汇总如下,持续更新:

Name

Value

Comment

SearchDepth

整数

搜索的深度

BlockType

模块类型名,即在 Library 中的名字

模块类型

FindAll

on/off

是否查找所有类型,包括block、line…

type

block/line/port/annotation

查找的类型

regexp

on/off

是否使用正则表达式

CaseSensitive

on/off

是否区分大小写

FirstResultOnly

on/off

是否只返回第一个符合的结果

MatchFilter

@函数句柄

筛选条件在函数中定义,函数返回的是布尔值

示例:

results1 = find_system('BMS','BlockType','Gain','Gain','1') % 查找 BMS 中所有 Gain 值为 1 的 Gain 模块
results2 = find_system('SearchDepth','1','regexp','on','Name','Diag') % 在模型顶层查找 Name 以 Diag 开头的模块

3 get_param()

获取参数名称和值。

语法:

ParamValue = get_param(Object, Parameter)

Object 可以是 model、block、root 三者的 Name 或 handle;

Parameter 可以是 model、block、root 三者的 Parameter;

Paramvalue 可以是 model、block、root 三者的 Parameter 的 name 或 value。

示例:

result1 = get_param('BMS','SolverType') % 获取 BMS 的 Solver 类型
result2 = get_param('BMS/CANConfig','ObjectParameters') % 获取 BMS 下的子模块 CANConfig 的所有属性
% 如果要获得某个模块的参数,Object 需要该模块的完整路径
% 如果要获得选中模块的参数,Object 可直接填写 gcb(get current block)

4 set_param()

设置系统和模块的参数值。

语法:

set_param(Object,ParaName1,Value1,ParaName2,Value2,…)

Object 可以是 model 或 block 这两者的 Name 或 handle

示例:

set_param('BMS/CANConfig','Position',[20 20 100 100]) % 设置子模块 CANConfig 的位置
set_param()

5 应用

还是用例子来展示:

% 该例实现的是,将所有 Constant 的 Name 设置成和 Value 一致
blks = find_system(bdroot,'Name','Constant'); % 获得所有的 Constant blocks
for ii = 1:length(blks)
    result = get_param(blks{ii},'Value'); % 获得每个 block 的 Value 属性值
    set_param(blks{ii},'Name',result); % 将 Name 属性值设置为 Value 属性值
end

 

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值