状态流图和C动作语言。设置数组值,用于单步输出一个向量。

问题描述 投票:0回答:1

对不起,也许是个愚蠢的问题,但我有个问题,就是在统计流图表中使用C语言ActionLanguage设置数组变量。

通常在C语言中,我可以在静态数组中放入所有的值,并写上 "A[]={1,3,2};",但在统计流图中,使用C语言的ActionLanguage,我怎么能做到呢?(在matlab语言中工作,但我需要在C语言中)我已经定义了我的变量与输出范围(因为它是),设置大小为3(我想要一个3个元素的数组),设置第一索引为 "0 "和类型int8。

如果要输出数组 "1,2,3",我写了 "gates=[1,2,3];",我也试过 "gates=[1 2 3]"等,但我收到了语法错误信息。https:/it.mathworks.comhelpstateflowugoperations-for-vectors-and-matrices.html。

为矩阵的所有元素赋值 在使用 MATLAB 作为操作语言的图表中,您可以使用单个操作来指定向量或矩阵的所有元素。例如,此操作可将 2×3 矩阵 A 的每个元素分配给不同的值。A = [1 2 3; 4 5 6]; 在使用 C 作为操作语言的图表中,您可以使用标量展开来将向量或矩阵的所有元素设置为相同的值。标量扩展将标量数据转换为与向量或矩阵数据的维度相匹配。例如,这个操作将矩阵A的所有元素设置为10 A=10。

但没有解释如何在所有的数组中设置不同的值,而且我需要从stateflow图表中的输出是在一个单一的步骤中:(.在图像中,有一个语法错误的步骤。谁能给我解释一下如何解决?状态图截图

thankyou!

c arrays simulink stateflow
1个回答
0
投票

那么,我有2种方法。

  1. 在MATLAB工作空间中定义值,例如:g1 = [1 0 0]; g0 = [0,0,0]。然后在你的stateflow中使用像gates = ml.g1这样的值,这可以用C动作语言来实现。(附图给出了这个方法的预览enter image description here
  2. 在你的图表中实现一个for循环(可能是一个图形函数或MATLAB函数),用来给你的输出数组赋值。

在这两种方法中,我认为第一种方法更容易处理,如果变量 "门 "的取值数量是有限的。否则,就选择方法2。

© www.soinside.com 2019 - 2024. All rights reserved.