通过Matlab脚本自动设置Simulink模块的大小和位置

本文介绍了如何通过matlab脚本自动化的设置simulink模型中模块的大小和位置,并对通过 get_param 和 set_param 这两个函数来读取和设置模块大小位置时的用法和参数数值的含义进行了解释。

如果觉得本文有用,帮忙点个赞哦~

首先我们通过 get_param 读取模型中一个Constant模块的位置和大小,脚本如下:

pos = get_param('myModel/Constant', 'Position');

模型如下:

 运行上面的脚本后,我们可以看到 workspace 中 pos 的数值如下:

get_param 函数的返回值 pos 是一个 1x4 的数组,那么该如何来理解这个数组呢?笔者通过分析发现, simulink 在建模空间中建立了一个坐标系,而 pos 的数值含义如下图:

我们可以发现有如下特点:

  1. Y轴正数方向向下
  2. pos 数组的前两个值是模块左上角点的坐标
  3. pos 数组的后两个值是模块右下角点的坐标

总结出了这些规律,我们就可以知道:

模块的宽度 = pos(3) – pos(1)

模块的高度 = pos(4) – pos(2)。

下面分析如何通过 set_param 函数设置模块的位置和大小,通过如下脚本,我们可以将Constant模块移动到一个新的位置,新的位置处,Constant模块的左上角点的坐标为(10, 20),右下角点的坐标为(30, 40)。

set_param('myModel/Constant', 'Position', [10, 20, 30, 40]);

我们也可以通过如下脚本,更方便的设置模块的位置和大小:

x = 10;
y = 20;
width = 20;
height = 15;
set_param('myModel/Constant', 'Position', [x, y, x + width, y + height]);

经过以上分析,我们了解了 get_param 和 set_param 两个函数在对模块大小和位置进行读取和设置时的规律,那么我们就可以开发一些脚本来对更复杂的 simulink 模型中的模块进行整理的工作。比如我们的模型中有很多的 inport,这些 inport 的名字有一定的规律,但是当前排布比较乱,那么我们可以开发一个脚本,将这些 inport 排布整齐,方便我们建模。

整理前,模型如下,inport 排布杂乱。

通过脚本自动将模块整理成如下整齐排布的样子,方便我们后续建模:

 脚本如下:

allinport = find_system('myModel', 'BlockType', 'Inport');
 
for i = 1:1:length(allinport)
    pos = get_param(allinport{i}, 'Position');
    width = pos(3) - pos(1);
    height = pos(4) - pos(2);
    
    x = 0;
    y = i * 40;
    set_param(allinport{i}, 'Position', [x, y, x + width, y + height]);
end

大家如果觉得有用,帮忙点个赞哦~

有问题也可以直接留言交流。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值