Stateflow®图表在仿真软件万博1manbetx®模型有一个动作语言属性,它定义了用于计算向量和矩阵的语法。动作语言属性是:
MATLAB®作为行动语言。
C作为行动语言。
有关更多信息,请参见作为动作语言语法的MATLAB与C的区别.
在使用MATLAB作为操作语言的图表中,通过使用由括号分隔的基于1的索引来引用向量或矩阵的元素。用逗号分隔不同维度的索引。
在使用C作为操作语言的图表中,使用以括号分隔的从零开始的索引来引用向量或矩阵的元素。将不同维度的索引包含在各自的括号中。
例子 | 作为行动语言的MATLAB |
C语言作为行动语言 |
---|---|---|
向量的第一个元素V |
V (1) |
V [0] |
的我 th向量元素V |
V(我) |
V(张) |
行中的元素4 和列5 一个矩阵的米 |
(4、5) |
M [3] [4] |
行中的元素我 和列j 一个矩阵的米 |
M (i, j) |
M(张)(j - 1) |
该表根据向量和矩阵操作数的优先级顺序(1 =最高,3 =最低)总结了所有二进制操作的解释。二元运算是左关联的,因此在任何表达式中,具有相同优先级的运算符从左到右计算。除了图表中的矩阵乘法和除法运算符使用MATLAB作为操作语言外,所有的二元运算符都执行按元素的运算。
操作 |
优先级 |
作为行动语言的MATLAB |
C语言作为行动语言 |
---|---|---|---|
|
1 |
矩阵乘法。 |
Element-wise乘法。对于矩阵乘法,使用 |
|
1 |
Element-wise乘法。 |
不受支持万博1manbetx的。使用操作 |
|
1 |
矩阵分裂。 |
Element-wise正确的部门。对于矩阵的右除法,使用 |
|
1 |
Element-wise正确的部门。 |
不受支持万博1manbetx的。使用操作 |
|
1 |
矩阵左部。 |
不受支持万博1manbetx的。使用 |
|
1 |
Element-wise离开。 |
不受支持万博1manbetx的。使用 |
|
2 |
加法。 |
加法。 |
|
2 |
减法。 |
减法。 |
|
3. |
比较,等于。 |
比较,等于。 |
|
3. |
比较,不等于。 |
比较,不等于。 |
|
3. |
不受支持万博1manbetx的。使用操作 |
比较,不等于。 |
|
3. |
不受支持万博1manbetx的。使用操作 |
比较,不等于。 |
这个表总结了所有的一元运算以及对向量和矩阵操作数的操作。一元操作:
具有比二元运算符更高的优先级。
是右关联的,因此,在任何表达式中,它们是从右到左计算的。
执行element-wise操作。
该表总结了对向量和矩阵操作数的赋值运算的解释。
操作 |
作为行动语言的MATLAB |
C语言作为行动语言 |
---|---|---|
|
简单的任务。 |
简单的任务。 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
可以使用适合于图表操作语言的索引语法,将值分配给向量或矩阵的单个条目。
例子 | 作为行动语言的MATLAB |
C语言作为行动语言 |
---|---|---|
指定的值10 向量的第一个元素V . |
V (1) = 10; |
V [0] = 10; |
将值77赋给矩阵的第2行和第9列中的元素米 . |
2米(9)= 77; |
M [1] [8] = 77; |
在使用MATLAB作为操作语言的图表中,可以使用单个操作指定向量或矩阵的所有元素。例如,这个操作为2 × 3矩阵的每个元素赋值一个
换一种不同的价值
A = [1 2 3;4 5 6];
在使用C作为操作语言的图表中,您可以使用标量扩张将一个向量或矩阵的所有元素设置为相同的值。标量展开将标量数据转换为匹配向量或矩阵数据的维数。例如,此操作设置矩阵的所有元素一个
来10
:
= 10;
标量展开适用于所有图形、真值表、MATLAB和Simulink函数。万博1manbetx假设你定义了一个函数的形式参数f
标量。该表描述函数调用的标量展开规则y = f (u)
.
输出y |
输入u |
结果 |
---|---|---|
标量 | 标量 | 没有标量膨胀。 |
标量 | 向量或矩阵 | 图表产生了尺寸不匹配错误。 |
向量或矩阵 | 标量 | 图使用标量展开来指定的标量输出值 y[我][j] = f (u) |
向量或矩阵 | 向量或矩阵 | 图使用标量展开计算每个元素的输出值 y[我][j] = f (u[我][j]) y 和u 不具有相同的尺寸,则图表产生尺寸不匹配错误。 |
对于具有多个输出的函数,同样的规则也适用,除非输出和输入都是向量或矩阵。在这种情况下,图表会生成一个大小不匹配错误,并且不会发生标量展开。
使用MATLAB作为操作语言的图表不支持标量展开。万博1manbetx
在使用C语言作为操作语言的图表中,操作*
和/
执行元素的乘法和除法。要在C图中执行标准矩阵乘法和除法,使用MATLAB函数。
假设你想对方阵进行这些运算u1
和u2
:
计算标准矩阵乘积y = u1 * u2
.
解方程U1 * y2 = u2
.
解方程Y3 * u1 = u2
.
要在C图中完成这些计算,添加一个MATLAB函数来运行以下代码:
函数[y1, y2, y3] = my_matrix_ops(u1, u2)% # codegeny = u1 * u2;%矩阵乘法y = u1 \ u2;矩阵从右除%Y3 = u1 / u2;矩阵从左边除法
在图表中,使用MATLAB作为动作语言,进行运算*
,/
,\
执行标准矩阵乘法和除法。您可以在状态和转换操作中直接使用这些操作。