如何在Simulink中克隆子系统但使用不同的参数集?或者:如何为子系统定义本地索引变量?

时间:2013-09-23 08:56:47

标签: matlab vectorization simulink

我的Simulink模型将包含(很多) n个相同的子系统,每个子系统由大约30个不同的预定参数定义。目前,每次复制一个子系统时,我都需要修改每个块的属性,因此工作量很大,容易出错。所以我的想法是将相应的参数存储在向量中,如下所示:

parametersA = (parameterA1 , parameterA2 , ... , parameterAn);
...
parametersZ = (parameterZ1 , parameterZ2 , ... , parameterZn);

然后,块属性中的值将被定义为子系统#2的parametersA(2)和第n个子系统的parametersA(n)。或者想象每个子系统都包含一个PID控制器,并且需要定义比例增益KP。因此,第一个子系统将调用KP(1)和第n个KP(n)

因此我的基本问题是:如何在每个子系统中声明我的索引变量n,因此每个块都知道要调用哪个参数向量元素?

另一个问题是:是否真的有必要复制我的子系统,或者一切都可以在一个子系统中完成?这会影响模拟时间吗?

1 个答案:

答案 0 :(得分:3)

您是否考虑过屏蔽子系统并使用掩码中的一个结构对其进行参数化(请参阅文档中的Masking)?然后,掩模下面的所有块都将使用该结构的字段进行参数化。然后,您可以拥有一个结构的单元格数组,用于参数化子系统的每个实例。实际上,掩码可能需要的唯一参数是单元数组中的索引,该索引在基础工作区中定义。