数组与矩阵运算
简介
MATLAB®有两种不同类型的算术运算:数组运算和矩阵运算。您可以使用这些算术操作来执行数值计算,例如,将两个数字相加,将数组的元素提高到给定的幂,或将两个矩阵相乘。
矩阵运算遵循线性代数的规则。相比之下,数组操作逐个元素执行操作,并支持多维数组。句号字符(.
)将数组操作与矩阵操作区分开来。但是,由于矩阵和数组的加法和减法操作是相同的,因此字符对.+
而且.-
是不必要的。
数组操作
数组操作在向量、矩阵和多维数组的相应元素上逐个元素执行操作。如果操作数大小相同,则第一个操作数中的每个元素将与第二个操作数中相同位置的元素进行匹配。如果操作数具有兼容的大小,则每个输入将根据需要隐式展开,以匹配另一个输入的大小。有关更多信息,请参见基本操作的兼容数组大小.
作为一个简单的例子,您可以将两个具有相同大小的向量相加。
A = [1 1 1]
A = 1 1 1
B = [1 2 3]
3 .答案为B
A + B
Ans = 2 3 4
如果一个操作数是标量而另一个不是,那么MATLAB隐式地将标量展开为与另一个操作数相同的大小。例如,可以计算标量和矩阵的元素积。
A = [1 2 3;1 2 3)
A = 1 2 3 1 2 3
3 . *
Ans = 3 6 9 3 6 9
隐式展开也适用于从3 × 3矩阵中减去1 × 3向量,因为这两种大小是兼容的。执行减法时,向量隐式展开为3 × 3矩阵。
A = [1 1 1;2 2 2;3 3 3]
A = 1 1 1 2 2 2 2 3 3 3
M = [2 4 6]
M = 2 4
一个米
Ans = -1 -3 -5 0 -2 -4 1 -1 -3
行向量和列向量具有兼容的大小。如果将1 × 3向量与2 × 1向量相加,那么在MATLAB执行元素相加之前,每个向量隐式展开为2 × 3矩阵。
X = [1 2 3]
X = 1 2 3
y = [10;15)
Y = 10 15
x + y
Ans = 11 12 13 16 17 18
如果两个操作数的大小不兼容,则会得到一个错误。
A = [8 1 6;3 5 7;4 9 2)
A = 8 1 6 3 5 7 4 9 2
M = [2 4]
M = 2 4
一个米
矩阵维数必须一致。
下表总结了MATLAB中的算术数组运算符。有关特定于函数的信息,请单击指向最后一列中的函数参考页面的链接。
操作符 |
目的 |
描述 |
参考页面 |
---|---|---|---|
|
除了 |
|
+ |
|
一元加 |
|
uplus |
|
减法 |
|
- |
|
一元- |
|
uminus |
|
Element-wise乘法 |
|
次 |
|
Element-wise权力 |
|
权力 |
./ |
对数组划分 |
|
rdivide |
|
离开数组划分 |
|
ldivide |
|
数组转置 |
|
转置 |
矩阵运算
矩阵运算遵循线性代数的规则,与多维数组不兼容。输入所需的大小和形状彼此之间的关系取决于操作。对于非标量输入,矩阵运算符通常与数组运算符计算的结果不同。
例如,如果你使用矩阵右除法算子,/
,如果要除两个矩阵,两个矩阵的列数必须相同。但如果你用矩阵乘法算子,*
两个矩阵相乘,那么两个矩阵必须有公约数内部尺寸.也就是说,第一个输入中的列数必须等于第二个输入中的行数。矩阵乘法算符计算两个矩阵的乘积,
要知道这一点,你可以计算两个矩阵的乘积。
A = [1 3;2 4]
A = 1 3 2
B = [3 0;1 5]
B = 3 0 1 5
A * B
Ans = 6 15 10 20
前面的矩阵乘积不等于下面的元素乘积。
a * B
Ans = 3 0 2 20
下表提供了MATLAB中矩阵算术算子的摘要。有关特定于函数的信息,请单击指向最后一列中的函数参考页面的链接。
操作符 |
目的 |
描述 |
参考页面 |
---|---|---|---|
|
矩阵乘法 |
|
mtimes |
|
矩阵左部 |
|
mldivide |
|
矩阵分裂 |
|
mrdivide |
|
矩阵幂 |
|
mpower |
|
复杂的共轭转置 |
|
ctranspose |