如何在信号线上获取信号名称的位置(MATLAB / Simulink)

时间:2013-11-08 06:18:19

标签: matlab simulink

当我设置一个名称来发信号时,我有一些关于信号名称的问题。

现在我可以通过

设置和获取信号名称
set_param(signal_h, 'SignalNameFromLabel', signal_name);

get_param(signal_h, 'Name');

但我无法设置或获取信号名称的位置。

我打开.mdl作为文本(记事本++)然后我发现* .mdl将信号名称的位置保留为标签参数中的矩阵

所以我想问你们所有,如何通过命令行设置或获取信号名称的位置。

对不起我的英语技能。 谢谢你的所有答案。

enter image description here

2 个答案:

答案 0 :(得分:2)

当您inspect信号处理时,当您修改信号位置时,您将找不到任何属性更改。所以我认为没有简单的方法可以做你想做的事。也许你可以使用底层的java对象,但它会很复杂。 (......我无能为力)

我假设你以编程方式创建整个模型,不是吗?因此,您可以指定块的确切位置,并可能使用add_line命令绘制连接。为什么不考虑使用annotations标记信号?您像以前一样命名信号,但不要使标签可见。您可以使用以编程方式生成的注释,而不是上面链接的文档示例:

new_system('test')
open_system('test')
add_block('built-in/Gain', 'test/Gain', 'Position', ...
[260, 125, 290, 155])
add_block('built-in/Note','test/programmatically created', ...
'Position', [550 0 0 180])

enter image description here

答案 1 :(得分:1)

正如thewaywewalk所提到的那样,没有任何程序化的方式来做你想要的事情(至少没有任何记录)。您可以通过设置代表信号的端口或行的名称参数来以编程方式命名信号:

p = get_param(gcb, 'PortHandles')
l = get_param(p.Outport, 'Line')
set_param(l, 'Name', 's9')

但是根据documentation,你只能用鼠标交互地移动信号标签:

  

移动信号标签

     

标签可以显示在水平线的上方或下方   或线段,以及垂直线或线的左侧或右侧   段。标签可以出现在任何一端,中心或任何位置   这些地点的组合。

     

要移动信号标签,请将标签拖到线上的新位置。释放鼠标按钮时,标签会固定其位置   在线附近。您不能将标签拖离其信号,但仅限于此   到与信号相邻的不同位置。