初始化总线数组
要为总线数组中的每个单独信号指定唯一的初始值,可以使用初始条件结构体数组。数组中的每个结构体都初始化其中一个总线。
下面的示例显示如何初始化总线数组。假设您定义总线类型 MyData 和 PressureBus。
假设您将信号元素 temperature 的数据类型设置为 int16,并将元素 s1 和 s2 的数据类型设置为 double。
要指定总线数组的初始条件,您可以创建一个变量,其值是初始条件结构体的数组。
initValues(1).temperature = int16(5);
initValues(1).pressure.s1 = 9.87;
initValues(1).pressure.s2 = 8.71;
initValues(2).temperature = int16(20);
initValues(2).pressure.s1 = 10.21;
initValues(2).pressure.s2 = 9.56;
initValues(3).temperature = int16(35);
initValues(3).pressure.s1 = 8.98;
initValues(3).pressure.s2 = 9.17;
变量 initValues 为一个信号(它是包含三个总线的一个数组)提供初始条件。您可以使用 initValues 指定模块的 Initial condition 参数,例如 Unit Delay。
您也可以使用单个标量结构体为数组中的所有总线指定相同的初始条件。
initStruct.temperature = int16(15);
initStruct.pressure.s1 = 10.32;
initStruct.pressure.s2 = 9.46;
如果在模块的 Initial condition 参数中指定 initStruct,则数组中的每个总线对信号元素 temperature 使用相同的初始值 15。同样,总线对元素 pressure.s1 使用初始值 10.32,对元素 pressure.s2 使用值 9.46。
要为使用大型信号元素层次结构的总线创建结构体数组,请考虑使用函数 Simulink.Bus.createMATLABStruct。
以下示例说明如何初始化嵌套总线数组。为包含嵌套总线数组的复杂信号层次结构创建初始条件结构体。
在总线编辑器中,创建 Bus 对象 MyData 和 PressureBus。
在层次结构窗格中,选择总线元素 pressure。将 Dimensions 属性设置为 [1 3]。
使用函数 Simulink.Bus.createMATLABStruct 创建一个包含四个初始化结构体的数组。将该数组存储在变量 initStruct 中。将所有单个信号初始化为接地值 0。
initStruct=Simulink.Bus.createMATLABStruct('MyData',[],[1 4]);
在基础工作区中,双击变量 initStruct 以在 Variable Editor 中查看它。
数组中的四个结构体各自都具有字段 temperature 和 pressure。
要检查 pressure,请双击其中一个字段。
四个 pressure 字段中每个字段的值都是一个包含三个子结构体的数组。每个子结构体都有字段 s1 和 s2。
要为总线数组中的信号提供唯一的初始化值,可以使用 Variable Editor 手动指定值。
您也可以编写脚本。例如,要访问 initStruct 的第三个结构体中第二个子结构体 pressure 的字段 s1,请使用以下代码:
initStruct(3).pressure(2).s1 = 15.35;