主要内容

Stateflow结构指数和赋值

这个例子展示了如何访问和修改的内容Stateflow®Stateflow结构的结构或数组。Stateflow结构是一种数据类型定义的金宝appSimulink.Bus(金宝app模型)对象。您可以使用Stateflow结构不同大小和类型的数据捆绑为一个单独的数据对象。有关更多信息,请参见通过Stateflow访问总线信号结构

指数子结构和字段

指数Stateflow结构的子结构和字段,使用点符号。一个名称的第一部分确定父结构。后续部分确定孩子们沿着层次路径。孩子们可以单个字段或字段包含其他结构(也称为子结构)。Stateflow结构的字段的名称匹配的元素的名称金宝appSimulink.Bus定义了对象的结构。当一个字段包含一个向量、矩阵或数组,您可以访问它的元素通过使用索引你的图表符号语言支持的行动。金宝app

例如,在这个模型中包含一个输入结构的图表(),一个输出结构()、局部结构(localbus),和当地的数组结构(subBusArray)。

  • 表定义了输入结构,输出结构和局部结构localbus通过使用金宝appSimulink.Bus对象BusObject。这些结构有四个方面:某人,一个,b,c

  • 这个领域某人是一个子结构的定义金宝appSimulink.Bus对象subbu。这个底座有一个字段避署

  • 图定义了本地数组结构subBusArray通过使用金宝appSimulink.Bus对象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作为动作语言,您访问数组的元素在这个例子通过使用从索引由括号分隔开的。图表中使用C作为行动的语言,使用由括号分隔开的从零开始的索引。有关更多信息,请参见Stateflow向量和矩阵的操作

结构和字段赋值

你可以写任何Stateflow结构以外的范围输入。你可以给整个结构赋值,子结构,或者单个字段。

  • 分配一个结构到另一个结构,定义两个结构相同的金宝appSimulink.Bus对象的基本工作空间。

  • 分配一个结构的子结构不同结构(或反过来),定义相同的结构和子结构金宝appSimulink.Bus对象。

  • 分配一个结构的另一个领域的结构,必须具有相同的类型和大小的字段。您可以定义Stateflow结构不同金宝appSimulink.Bus对象。

例如,这个例子中的图表使这些作业:

  • localbus = sb2abc (in.sb)——结构localbus和MATLAB®函数的输出参数sb2abc从定义是一样的吗金宝appSimulink.Bus对象BusObject。函数输入分解为三个部分:一个矢量,3×2矩阵和标量。函数返回这些组件的领域一个,b,c它的输出。关于这个函数的更多信息,请参阅访问总线信号仿金宝app真软件MATLAB函数

  • subBusArray (1) = in.sb——结构subBusArray (1)和子结构in.sb从定义是一样的吗金宝appSimulink.Bus对象subbu

  • subBusArray (2) = abc2sb(中)——结构subBusArray (2)和图形函数的输出参数abc2sb从定义是一样的吗金宝appSimulink.Bus对象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从定义是一样的吗金宝appSimulink.Bus对象BusObject

  • out.sb= subBusArray(idx)——子结构out.sb和结构subBusArray (idx)从定义是一样的吗金宝appSimulink.Bus对象subbu

运行仿真

当你模拟的例子中,图表使用的值字段某人输入结构的填充字段一个,b,c输出的结构。的参数idx选择数组的元素的结构subBusArray使用子结构某人的输出。在这个例子中,idx= 2,所以图表使用的值字段一个,b,c输入的结构填充子结构。

当你使用其他值idx,子结构out.sb包含相同的值in.sb的转置in.sb或3 x3的幻方。

另请参阅

(金宝app模型)

相关的话题