主要内容

为状态流结构建立索引和赋值

这个示例展示了如何访问和修改statflow®结构或statflow结构数组的内容。状态流结构是您从金宝app仿真软件。公共汽车(金宝app模型)对象。可以使用statflow结构将不同大小和类型的数据捆绑到单个数据对象中。有关更多信息,请参见通过状态流结构访问总线信号

索引子结构和字段

要索引statflow结构的子结构和字段,使用点表示法。名称的第一部分标识父结构。随后的部分沿着分层路径标识子节点。子字段可以是单个字段,也可以是包含其他结构(也称为子结构)的字段。属性的元素的名称与statflow结构的字段的名称匹配金宝app仿真软件。公共汽车对象,该对象定义结构。当字段包含向量、矩阵或数组时,您可以使用图表操作语言支持的索引表示法访问其元素。金宝app

例如,该模型中的图表包含一个输入结构(),输出结构(),局部结构(localbus),以及结构的局部数组(subBusArray).

  • 图表定义了输入结构,输出结构,以及地方结构localbus通过使用金宝app仿真软件。公共汽车对象BusObject.这些结构有四个字段:某人一个b,c

  • 这个领域某人子结构是从金宝app仿真软件。公共汽车对象subbu.这个子结构有一个字段叫做避署

  • 该图表定义了结构的局部数组subBusArray通过使用金宝app仿真软件。公共汽车对象subbu.数组的大小为4。数组中的每个元素都是一个结构,其中一个字段名为避署

下面的列表演示了基于本示例的结构规范组合点表示法和数字索引的表达式:

  • in.c——字段c输入结构

  • 深夜(1)-向量场的第一个元素一个输入结构

  • out.sb——子结构某人输出结构

  • out.sb.ele——字段避署子结构的out.sb

  • out.sb.ele (2, 2)-字段第二列第二行中的元素避署子结构的out.sb

  • subBusArray (1)-结构数组的第一个元素subBusArray

  • subBusArray (1) .ele——字段避署的结构subBusArray (1)

  • subBusArray (1) .ele(3、4)-字段第三行第四列中的元素避署的结构subBusArray (1)

由于图表使用MATLAB作为操作语言,因此可以通过使用由括号分隔的基于1的索引来访问本例中的数组元素。在使用C作为操作语言的图表中,使用以括号分隔的从零开始的索引。有关更多信息,请参见金宝app向量和矩阵的支持运算

给结构和字段赋值

您可以写入任何作用域不是输入.可以给整个结构、子结构或单个字段赋值。

  • 要将一个结构分配给另一个结构,请从同一结构中定义这两个结构金宝app仿真软件。公共汽车对象在基本工作区中。

  • 为了将一个结构分配给另一个结构的子结构(或者反过来),从相同的结构和子结构中定义结构和子结构金宝app仿真软件。公共汽车对象。

  • 要将一个结构的字段分配给另一个结构的字段,字段必须具有相同的类型和大小。您可以从不同的地方定义statflow结构金宝app仿真软件。公共汽车对象。

例如,本例中的图表进行了以下分配:

  • localbus = sb2abc (in.sb)——结构localbus以及MATLAB®函数的输出参数sb2abc都是从同一个地方定义的吗金宝app仿真软件。公共汽车对象BusObject.这个函数把它的输入分解成三个分量:一个向量,一个3 × 2矩阵和一个标量。函数将这些组件作为字段返回一个b,c它的输出。有关此函数的更多信息,请参见在MATLAB金宝app函数中访问Simulink总线信号

  • subBusArray (1) = in.sb——结构subBusArray (1)和子结构in.sb都是从同一个地方定义的吗金宝app仿真软件。公共汽车对象subbu

  • subBusArray (2) = abc2sb(中)——结构subBusArray (2)以及图形函数的输出参数abc2sb都是从同一个地方定义的吗金宝app仿真软件。公共汽车对象subbu.该函数组合字段的值一个b,c并将它们重新排列成一个3 × 3的矩阵int8.它返回这个矩阵作为字段避署它的输出。

  • subBusArray (3) .ele= transpose(in.sb.ele)——字段subBusArray (3) .ele是否与结果的型号和尺寸相同置(in.sb.ele).两者都是3 × 3矩阵int8

  • subBusArray (4) .ele= int8(magic(3))——字段subBusArray (4) .ele是否与结果的型号和尺寸相同int8(魔法(3)).两者都是3 × 3矩阵int8

  • 出= localbus——两个localbus都是从同一个地方定义的吗金宝app仿真软件。公共汽车对象BusObject

  • out.sb= subBusArray(idx)——子结构out.sb和结构subBusArray (idx)都是从同一个地方定义的吗金宝app仿真软件。公共汽车对象subbu

运行仿真

在模拟示例时,图表使用字段的值某人的输入结构来填充字段一个b,c输出结构。的参数idx选择结构数组的元素subBusArray用作子结构某人的输出。在这个例子中,idx= 2,因此图表使用字段的值一个bc的输入结构来填充子结构。

当您使用其他值idx,子结构out.sb包含与in.sb的转置in.sb,或者是一个3乘3的魔方。

另请参阅

(金宝app模型)

相关的话题