文档

为每个子系统使用相同的动力学建模对象

这个例子展示了如何使用For Each子系统用相同的动力学建模多个对象。对象的数量由输入信号的长度参数化。

该示例说明了如何实现该模型sldemo_metro,使用一个For Each子系统来模拟三个相同的节拍器,另一个则模拟每个节拍器的运动对移动基座的相同效果。

sldemo_metro中三个相同节拍器的连续动态在相同的子系统中建模:sldemo_metro/Metronome1、sldemo_metro/Metronome2和sldemo_metro/Metronome3。您可以将这三个子系统表示为一个For Each子系统。节拍器的初始位置作为掩码参数传递给For Each子系统,该子系统用作其中一个积分器的初始条件。For Each子系统被配置为沿着第一个维度对该参数进行分区。因此,带有三个元素的输入向量定义了三个节拍器的初始位置。

图1:节拍器使用三个具有相同动力学的子系统建模

图2:节拍器使用一个For Each子系统建模

在检查移动基地的动力学,注意它涉及三个相同的二阶微分项对应于每个节拍器。您可以将这三个副本替换为一个For Each子系统。For Each子系统不需要九个输入信号,只需要三个输入信号:角位移、角速度和所有节拍器的角加速度。For Each子系统配置为沿着第一个维度划分输入信号,并对每个信号的一个元素进行一次迭代(即一个节拍器)。

图3:使用相同子系统的副本建模的二阶微分项

图4:使用For Each子系统建模的二阶微分项

在使用两个For Each子系统实现了原始模型之后,现在对模型进行了节拍器数量的参数化。为了增加节拍器的数量,在掩码参数中引入一个新值。

例如:

Theta4 = 0.7568;

双击Metronome_i块,打开掩码对话框,并更改输入位置(分区)为:[Theta1 Theta2 Theta3 Theta4]

执行模型,可以看到四个节拍器的位移角度和移动基座的位置。

sim卡(“sldemo_metro_foreach”);

图5:为四个节拍器参数化的For Each子系统模拟动画

图6:四个节拍器的For Each子系统参数化的仿真结果

这个话题有用吗?