在Simulink中有一种方法可以在多个信号上使用相同的块集(不复制这些块)吗?

时间:2011-01-31 16:39:43

标签: matlab simulink

我正在实施一些头部跟踪,我得到2个水平速度矩阵。 (矢量场分解为垂直和水平速度)。对于这些矩阵中的每一个,我都会做一些数学计算实际的头部跟踪。

我的问题是,有没有办法在两个矩阵上进行数学运算(这是一组块)而不将数学块复制到每个信号上?

这很难解释所以这是我的模型的屏幕截图: simulink model http://luka.s3.amazonaws.com/headtracking.png 你可以看到“复杂到真实的图像”块有2个输出(这是中间的小点)。然后,平均块和积分器电路计算真实矩阵(水平位置)的头部速度和位置。我想在假想矩阵(垂直方向)上完成相同的例程。显然我可以复制块,但肯定有更好的方法吗?在某种程度上,我正在寻找C语言等“正常编程”中的循环模拟,其中一段代码在不同的输入上执行了几次。

1 个答案:

答案 0 :(得分:5)

您可以在Simulink中创建一个包含可以多次引用的代码的库。

转到文件 - >新 - >图书馆。在打开的模型窗口中,您可以使用所需的任何代码创建任意数量的子系统。然后,只需将子系统从库中拖到模型中即可。子系统现在将出现在您的模型中,左下角有一个小箭头图标。这表明模型中的子系统是链接。您可以根据需要将库子系统的任意实例拖动到模型中,就像您可以在任何其他编程语言中多次调用函数一样。

如果右键单击模型中的子系统,则可以选择“链接选项 - >转到库阻止”以返回库。您可以在模型中进行更改,并将它们传播回库中。