Stateflow 图和 C 动作语言。设置数组值以单步输出向量

Stateflow chart and C Action Language. Set array values for give in output a vector in single step

对不起,这可能是一个愚蠢的问题,但我在使用 C 动作语言在状态流图中设置我的数组变量时遇到了问题。

通常在 C 语言中,我可以将所有带有“ A[]={1,3,2}; ”的值放入我的静态数组中,但在状态流图中,我如何使用 C ActionLanguage 呢? (在 matlab 语言中工作,但我需要在 C 中) 我已经用输出范围定义了我的变量(因为它是),将大小设置为 3(我想要一个包含 3 个元素的数组),将第一个索引设置为“0”并键入 int8.

如果想要输出数组“1,2,3”我写“gates=[1,2,3];”,我也试过"gates=[1 2 3]",等等,但我收到语法错误。 我的错误是什么? 我读过这个link:https://it.mathworks.com/help/stateflow/ug/operations-for-vectors-and-matrices.html

Assign Values to All Elements of a Matrix In charts that use MATLAB as the action language, you can use a single action to specify all of the elements of a vector or matrix. For example, this action assigns each element of the 2-by-3 matrix A to a different value: A = [1 2 3; 4 5 6]; In charts that use C as the action language, you can use scalar expansion to set all of the elements of a vector or matrix to the same value. Scalar expansion converts scalar data to match the dimensions of vector or matrix data. For example, this action sets all of the elements of the matrix A to 10 A=10;

但没有解释如何在所有数组中设置不同的值,而且我还需要状态流程图的输出是一步完成的:(。 图中有一个语法错误的步骤。有人可以解释我如何解决吗? Stateflow chart screenshot

谢谢!

好吧,我有两种方法:

  1. 定义 ex 的值:g1 = [1 0 0]; g0 = [0,0,0] 在 MATLAB 工作区中。然后在你的状态流中使用像 gates = ml.g1; 这样的值。这适用于 C 动作语言。(附图给出了此方法的预览)
  2. 在图表中实现一个 for 循环(可以是图形函数或 MATLAB 函数),用于为输出数组赋值。

在这两种方法中,我认为第一种方法更容易处理,如果变量'gates' 取值的数量有限的话。否则,请使用方法 2。