主要内容

万博1manbetx向量和矩阵的支持运算

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语言作为行动语言

a * b

1

矩阵乘法。

Element-wise乘法。对于矩阵乘法,使用在MATLAB函数中操作。看到用MATLAB函数进行矩阵运算

b。*

1

Element-wise乘法。

不受支持万博1manbetx的。使用操作a * b

a / b

1

矩阵分裂。

Element-wise正确的部门。对于矩阵的右除法,使用/在MATLAB函数中操作。看到用MATLAB函数进行矩阵运算

b。/

1

Element-wise正确的部门。

不受支持万博1manbetx的。使用操作a / b

一个\ b

1

矩阵左部。

不受支持万博1manbetx的。使用\在MATLAB函数中操作。看到用MATLAB函数进行矩阵运算

一个\ b。

1

Element-wise离开。

不受支持万博1manbetx的。使用。\在MATLAB函数中操作。看到用MATLAB函数进行矩阵运算

a + b

2

加法。

加法。

a - b

2

减法。

减法。

a = =

3.

比较,等于。

比较,等于。

~ = b

3.

比较,不等于。

比较,不等于。

一个= b !

3.

不受支持万博1manbetx的。使用操作~ = b

比较,不等于。

< > b

3.

不受支持万博1manbetx的。使用操作~ = b

比较,不等于。

一元操作和动作

这个表总结了所有的一元运算以及对向量和矩阵操作数的操作。一元操作:

  • 具有比二元运算符更高的优先级。

  • 是右关联的,因此,在任何表达式中,它们是从右到左计算的。

  • 执行element-wise操作。

例子

作为行动语言的MATLAB

C语言作为行动语言

~一个

逻辑。对于按位的NOT,使用bitcmp函数。

  • 位(默认)。通过选择使c位操作图表属性。

  • 逻辑。通过清除使c位操作图表属性。

有关更多信息,请参见按位操作使c位操作

!

不受支持万博1manbetx的。使用操作~一个

逻辑。

——一个

负的。

负的。

+ +

不受支持万博1manbetx的。

使向量或矩阵的所有元素递增。相当于= + 1

一个,

不受支持万博1manbetx的。

递减向量或矩阵的所有元素。相当于a = a - 1

赋值操作

该表总结了对向量和矩阵操作数的赋值运算的解释。

操作

作为行动语言的MATLAB

C语言作为行动语言

a = b

简单的任务。

简单的任务。

+ = b

不受支持万博1manbetx的。使用表达式一个= a + b

相当于一个= a + b

a - b =

不受支持万博1manbetx的。使用表达式一个= a - b

相当于一个= a - b

* = b

不受支持万博1manbetx的。使用表达式= a * b

相当于= a * b

a / b =

不受支持万博1manbetx的。使用表达式一个= a / b

相当于一个= a / b

给矩阵的单个元素赋值

可以使用适合于图表操作语言的索引语法,将值分配给向量或矩阵的单个条目。

例子

作为行动语言的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 结果
标量 标量 没有标量膨胀。
标量 向量或矩阵 图表产生了尺寸不匹配错误。
向量或矩阵 标量

图使用标量展开来指定的标量输出值f (u)每个元素y:

y[我][j] = f (u)

向量或矩阵 向量或矩阵

图使用标量展开计算每个元素的输出值u把它赋给对应的元素y:

y[我][j] = f (u[我][j])
如果yu不具有相同的尺寸,则图表产生尺寸不匹配错误。

对于具有多个输出的函数,同样的规则也适用,除非输出和输入都是向量或矩阵。在这种情况下,图表会生成一个大小不匹配错误,并且不会发生标量展开。

使用MATLAB作为操作语言的图表不支持标量展开。万博1manbetx

使用矩阵算法MATLAB功能

在使用C语言作为操作语言的图表中,操作/执行元素的乘法和除法。要在C图中执行标准矩阵乘法和除法,使用MATLAB函数。

假设你想对方阵进行这些运算u1u2:

  • 计算标准矩阵乘积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作为动作语言,进行运算/,\执行标准矩阵乘法和除法。您可以在状态和转换操作中直接使用这些操作。

相关的话题