Matlab中基本运算的兼容数组⼤⼩
⽬录
MATLAB® 中的⼤多数⼆元(两个输⼊)运算符和函数都⽀持具有兼容⼤⼩的数值数组。对于每个维度,如果两个输⼊的维度⼤⼩相同或其中⼀个为 1,则这些输⼊将具有兼容的⼤⼩。以最简单的情况为例,如果两个数组⼤⼩完全相同或其中⼀个为标量,则这两个数组⼤⼩是兼容的。执⾏按元素运算或函数时,MATLAB 会将⼤⼩兼容的数组隐式扩展为相同的⼤⼩。
⼤⼩兼容的输⼊
⼆维输⼊
以下是⼀些具有兼容⼤⼩的标量、向量和矩阵的组合:
两个⼤⼩完全相同的输⼊。
⼀个输⼊是标量。
⼀个输⼊是矩阵,另⼀个输⼊是具有相同⾏数的列向量。
⼀个输⼊是列向量,另⼀个输⼊是⾏向量。
多维数组
MATLAB 中的每个数组都具有⼤⼩为 1 的尾部维度。对于多维数组,这意味着 3×4 矩阵与⼤⼩为 3×4×1×1×1 的矩阵相同。具有兼容⼤⼩的多维数组的⽰例如下:
⼀个输⼊是矩阵,另⼀个输⼊是具有相同⾏数和列数的三维数组。
matlab数组赋值⼀个输⼊是矩阵,另⼀个输⼊是三维数组。这些维度要么都相同,要么其中⼀个为 1。
空数组
对于空数组或维度⼤⼩为零的数组,规则是相同的。不等于 1 的维度⼤⼩确定输出的⼤⼩。这意味着,⼤⼩为零的维度必须与另⼀个数组中⼤⼩为 1 或 0 的维度进⾏配对,并且输出的维度⼤⼩为 0。
A: 1-by-0
B: 3-by-1
Result: 3-by-0
⼤⼩不兼容的输⼊
不兼容的输⼊的⼤⼩⽆法隐式扩展为相同的⼤⼩。例如:
其中⼀个维度⼤⼩不相等,并且维度⼤⼩均不为 1。
A: 3-by-2
B: 4-by-2
两个长度不相同的⾮标量⾏向量。
A: 1-by-3
B: 1-by-4
⽰例
从矩阵减去向量
要简化向量-矩阵运算,对维函数(例如 sum、mean、min 以及其他)使⽤隐式扩展。
例如,计算矩阵中每列的均值,然后从每个元素中减去均值。
A = magic(3)
A =
8    1    6
3    5    7
4    9    2
C = mean(A)
C =
5    5    5
A - C
ans =
3    -
4    1
-2    0    2
-1    4    -3
⾏向量和列向量相加
⾏向量和列向量的⼤⼩兼容,对它们执⾏运算时,结果为⼀个矩阵。        例如,将⾏向量和列向量相加。结果与 bsxfun(@plus,a,b) 相同。
a = [1 2 3 4]
ans =
1    2    3    4
b = [5; 6; 7]
ans =
5
6
7
a + b
ans =
6    7    8    9
7    8    9    10
8    9    10    11