链接块中的动态布线

时间:2013-07-04 14:01:02

标签: matlab simulink

问题:

在我的simulink模型中,我有一个总线创建器,它将所有信号发送到一个块。块的目的是基于索引动态地生成选择器和开关。示例:我有3个对象,每个对象都有一个位置和一个速度信号,我想得到3个对象的位置,所以3个信号(这意味着总线选择器将有3个输出,多个开关将有4个(一个)对于索引))。该块正常工作,在回调中调用递归函数脚本,它检查总线是否有所有可能的信号并计算对象数,并相应地修改总线选择器和开关。问题是这个块链接到一个库,所以我必须禁用链接才能使回调脚本工作。

问题:

  1. 为了避免禁用链接,我应该更改什么?
  2. 是否有其他方式进行动态布线而不使用回调脚本?

2 个答案:

答案 0 :(得分:0)

我建议使用vector concatenation块而不是总线创建者加上matlab function块来选择。这是模型

enter image description here

这是matlab函数中的代码:

enter image description here

通过这种方式,库中的块不需要每次都更改。此外,如果你必须保留你的公共汽车,你可以使用bus to vector块将它们转换为矢量。

答案 1 :(得分:0)

使用MATLAB Function块进行选择的想法很好,但我会尝试使用总线输入来保留使用总线的优势,而不是转换为向量和向后。因此,我没有将您的代码作为总线选择器块的回调,而是建议在具有总线输入的MATLAB功能块中实现它,并使用信号输入在总线中进行选择,并将输出定义为公共汽车对象。