我的 Simulink 模型将包含(很多) n
个相同的子系统,每个子系统由大约 30 个不同的预定参数定义。目前,每次我复制一个子系统时,我都需要修改每个 block 的属性,因此需要做大量容易出错的工作。所以我的想法是将相应的参数存储在一个向量中,如下所示:
parametersA = (parameterA1 , parameterA2 , ... , parameterAn);
...
parametersZ = (parameterZ1 , parameterZ2 , ... , parameterZn);
然后 block 属性中的值将被定义为子系统 #2 的 parametersA(2)
和第 n 个子系统的 parametersA(n)
。或者想象每个子系统都包含一个 PID Controller ,并且需要定义比例增益 KP
。所以第一个子系统将调用 KP(1)
和第 n 个 KP(n)
。
因此我的基本问题是:如何在每个子系统中声明我的索引变量 n
,以便每个 block 都知道要调用参数向量的哪个元素?
另一个问题是:是否真的有必要复制我的子系统,或者所有的事情都可以在一个系统中完成吗?这会影响仿真时间吗?
最佳答案
您是否考虑过使用掩码中的一个结构来掩蔽您的子系统并对其进行参数化(请参阅文档中的 Masking)?然后,将使用该结构的字段对掩码下的所有 block 进行参数化。然后,您可以拥有一个结构元胞数组,用于对子系统的每个实例进行参数化。事实上,掩码可能需要的唯一参数是元胞数组中的索引,它是在基础工作区中定义的。
关于matlab - 如何克隆子系统但在 Simulink 中使用不同的参数集?或者 : How to define local index variables for subsystems?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955296/