给定代码:
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.
操作员.
到底做什么?
点本身不是运算符,.^
是运算符。
.^
是逐点¹(即元素)的幂,因为.*
是逐点乘积。
.^
阵列电源。A.^B
是具有A(i,j)
B(i,j)
幂的元素的矩阵。A
和B
的大小必须相同或兼容。
C.f.
- "数组与矩阵运算":https://mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html
- "逐点":http://en.wikipedia.org/wiki/Pointwise
- "元素操作":http://www.glue.umd.edu/afs/glue.umd.edu/system/info/olh/Numerical/Matlab_Matrix_Manipulation_Software/Matrix_Vector_Operations/elementwise
¹) 因此点。
MATLAB 文档中有一整页专门讨论这个主题:数组与矩阵运算。它的要点如下:
MATLAB® 有两种不同类型的算术运算:数组运算和矩阵运算。您可以使用这些算术运算来执行数值计算,例如,将两个数字相加、将数组的元素提高到给定的幂或将两个矩阵相乘。
矩阵运算遵循线性代数的规则。相比之下,数组操作逐个元素执行操作并支持多维数组。句点字符(
.
)区分数组运算和矩阵运算。但是,由于加法和减法的矩阵和数组操作相同,因此不需要字符对.+
和.-
。