Большая часть двоичного файла (2D вход), операторы и функции в 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 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