MATLAB 中基本运算的兼容数组大小

2025年3月17日 | 阅读 3 分钟

兼容数组大小是指输入数组的维度大小相同,或者其中一个维度是标量。对于每个维度,二元运算符和函数都能很好地处理具有兼容大小的数组。 MATLAB 隐式扩展具有兼容大小的数组,以使它们在执行元素操作或函数期间具有相同的大小。

具有兼容大小的数组输入

二维数组输入

让我们通过一些标量、向量和矩阵的组合来理解,这些组合具有兼容的大小

  • 两个数组输入的大小完全相同。
Compatible Array Sizes for Basic Operations in MATLAB
  • 一个数组输入是一个标量。
Compatible Array Sizes for Basic Operations in MATLAB
  • 一个输入是矩阵,另一个输入是具有相似行数的列向量。
Compatible Array Sizes for Basic Operations in MATLAB
  • 一个输入是列向量,另一个输入是行向量。
Compatible Array Sizes for Basic Operations in MATLAB

多维数组输入

  • 一个输入是矩阵,另一个输入是具有相同行数和列数的 3 维数组。
Compatible Array Sizes for Basic Operations in MATLAB
  • 一个输入是矩阵,另一个输入是 3 维数组。所有输入的维度要么相同,要么其中一个输入是 1 维的。
Compatible Array Sizes for Basic Operations in MATLAB

空数组输入

空数组是没有元素且维度大小为零的数组。 空数组和非空数组的规则相同,并且不等于 1 的维度的尺寸确定了输出的尺寸。

示例

输出

>> a.*b

ans =

  3x3x0 empty double array

MATLAB 隐式地扩展了具有兼容大小的数组,但是不兼容的大小无法隐式地扩展为相同大小。

  • 其中一个输入维度大小既不相等也不为一。

示例

输出

>> a+b
Matrix dimensions must agree.
>> a-b
Matrix dimensions must agree.
>> a.*b
Matrix dimensions must agree.
  • 两个长度不相等的非标量行向量。

示例

输出

>> a+b
Matrix dimensions must agree.

>> a-b
Matrix dimensions must agree.

>> a.*b
Matrix dimensions must agree

行向量和列向量的兼容性

即使具有不同的尺寸和长度,行向量和列向量也始终具有兼容的大小。对这些向量执行算术运算会创建一个矩阵。

示例

输出

 
>>% adding two row and column vectors
>> a + b
ans =
    1.9058    1.9058    1.9058
    1.1270    1.1270    1.1270
    1.9134    1.9134    1.9134
    1.6324    1.6324    1.6324

>>% subtraction of two row and column vectors
>> a - b
ans =
    0.0942    0.0942    0.0942
    0.8730    0.8730    0.8730
    0.0866    0.0866    0.0866
    0.3676    0.3676    0.3676

>>% array multiplication of two row and column vectors
>> a.*b
ans =
    0.9058    0.9058    0.9058
    0.1270    0.1270    0.1270
    0.9134    0.9134    0.9134
    0.6324    0.6324    0.6324