鉴于代码:
A = [1 2 3; 3 2 1]
B = A.^2
输出:
B =
1 4 9
9 4 1
但如果我这样做:B = A^2
输出结果为:
Error using ^
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
运营商.
到底做了什么?
答案 0 :(得分:53)
点本身不是运算符,.^
是。
.^
是一个逐点¹(即元素方面)的幂,因为.*
是pointwise product。
.^
阵列功率。A.^B
是具有A(i,j)
幂B(i,j)
元素的矩阵。A
和B
必须具有相同的大小,除非其中一个是标量。
C.f。
¹)因此点。
答案 1 :(得分:5)
MATLAB文档中有一整页专门讨论该主题:Array vs. Matrix Operations。它的要点如下:
MATLAB®有两种不同类型的算术运算:数组运算和矩阵运算。您可以使用这些算术运算来执行数值计算,例如,添加两个数字,将数组的元素提升到给定的幂,或者乘以两个矩阵。
矩阵运算遵循线性代数规则。相比之下,数组操作逐个元素操作并支持多维数组。句点字符(
.
)区分数组操作和矩阵操作。但是,由于矩阵和数组运算对于加法和减法是相同的,因此不需要字符对.+
和.-
。