Большинство двоичных (с двумя входами) операторов и функций в MATLAB® поддерживает числовые массивы, которые имеют совместимые размеры. Два входа имеют совместимые размеры, если для каждого измерения размерности входов либо одинаковы, либо один из них равен 1. В самых простых случаях два размера массивов совместимы, если они в точности одинаковы или если один скаляр. MATLAB неявно расширяет массивы с совместимыми размерами, чтобы быть одинаковым размером во время выполнения поэлементной операции или функции.
Это некоторые комбинации скаляров, векторов и матриц, которые имеют совместимые размеры:
Два входов имеют одинаковый размер.

Один вход является скаляром.

Один вход является матрицей, а другой - вектором-столбцом с одинаковым числом строк.

Один вход является вектором-столбцом, а другой - вектор-строка.

Каждый массив в MATLAB имеет последующие измерения размера 1. Для многомерных массивов это означает, что матрица 3 на 4 совпадает с матрицей размера 3 на 4 на 1 на 1 на 1. Примерами многомерных массивов с совместимыми размерами являются:
Один вход является матрицей, а другой - трехмерным массивом с одинаковым числом строк и столбцов.

Один вход является матрицей, а другой - трехмерным массивом. Размерности все одинаковые или один из них равен 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 2C = mean(A)
C =
5 5 5A - C
ans =
3 -4 1
-2 0 2
-1 4 -3Векторы строка и столбец имеют совместимые размеры, и когда вы выполняете операцию над ними, результатом является матрица.
Для примера добавьте вектор строка и столбец. Результат такой же, как и bsxfun(@plus,a,b).
a = [1 2 3 4]
ans =
1 2 3 4b = [5; 6; 7]
ans =
5
6
7a + b
ans =
6 7 8 9
7 8 9 10
8 9 10 11