MATLAB® имеет два различных типов арифметических операций: операции над массивами и операции над матрицей. Можно использовать эти арифметические операции, чтобы выполнить числовые расчеты, например, добавляя два числа, возводя элементы массива к данной степени, или умножая две матрицы.
Операции над матрицей следуют правилам линейной алгебры. В отличие от этого, операции над массивами выполняют поэлементно операции и поддерживают многомерные массивы. Символ точки (.
) отличает операции над массивами от операций над матрицей. Однако, поскольку операции над матрицей и операции над массивами являются тем же самым для сложения и вычитания, символьные пары .+
и .-
являются ненужными.
Операции над массивами выполняют поэлементно операции на соответствующих элементах векторов, матриц и многомерных массивов. Если операнды имеют тот же размер, то каждый элемент в первом операнде подходится в элементе в том же месте во втором операнде. Если операнды имеют совместимые размеры, то каждый вход неявно расширен по мере необходимости, чтобы совпадать с размером другого. Для получения дополнительной информации см. "Совместимые размеры массивов для основных операций".
Как простой пример, можно добавить два вектора с тем же размером.
A = [1 1 1]
A = 1 1 1
B = [1 2 3]
B = 1 2 3
A+B
ans = 2 3 4
Если один операнд является скаляром, и другой не, то MATLAB неявно расширяет скаляр, чтобы быть одного размера с другим операндом. Например, можно вычислить поэлементное произведение скаляра и матрицы.
A = [1 2 3; 1 2 3]
A = 1 2 3 1 2 3
3.*A
ans = 3 6 9 3 6 9
Неявное расширение также работает, если вы вычитаете 1 3 вектор из 3х3 матрицы, потому что эти два размера совместимы. Когда вы выполняете вычитание, вектор неявно расширен, чтобы стать 3х3 матрицей.
A = [1 1 1; 2 2 2; 3 3 3]
A = 1 1 1 2 2 2 3 3 3
m = [2 4 6]
m = 2 4 6
A - m
ans = -1 -3 -5 0 -2 -4 1 -1 -3
Вектор-строка и вектор-столбец имеют совместимые размеры. Если вы добавляете 1 3 вектор к 2 1 вектор, то каждый вектор неявно расширяется в 2 3 матрица, прежде чем MATLAB выполнит поэлементное сложение.
x = [1 2 3]
x = 1 2 3
y = [10; 15]
y = 10 15
x + y
ans = 11 12 13 16 17 18
Если размеры этих двух операндов несовместимы, то вы получаете ошибку.
A = [8 1 6; 3 5 7; 4 9 2]
A = 8 1 6 3 5 7 4 9 2
m = [2 4]
m = 2 4
A - m
Matrix dimensions must agree.
Следующая таблица предоставляет сводные данные арифметических операторов массивов в MATLAB. Для функционально-специализированной информации щелкните по ссылке к странице ссылки на функцию в последнем столбце.
Оператор | Цель | Описание | Страница с описанием |
---|---|---|---|
| Сложение |
| plus |
| Унарный плюс |
| uplus |
| Вычитание |
| minus |
| Унарный минус |
| uminus |
| Поэлементное умножение |
| times |
| Поэлементная степень |
| power |
./ | Деление правого массива |
| rdivide |
| Левое деление массива |
| ldivide |
| Массив транспонирует |
| transpose |
Операции над матрицей следуют правилам линейной алгебры и не совместимы с многомерными массивами. Необходимый размер и форма входных параметров друг относительно друга зависят от операции. Для нескалярных входных параметров матричные операторы обычно вычисляют различные ответы, чем их дубликаты оператора массивов.
Например, если вы используете матричный оператор правого деления, /
, чтобы разделить две матрицы, матрицы должны иметь одинаковое число столбцов. Но если вы используете оператор умножения матриц, *
, чтобы умножить две матрицы, затем матрицы должны иметь общую внутреннюю размерность. Таким образом, количество столбцов в первом входе должно быть равно количеству строк во втором входе. Оператор умножения матриц вычисляет продукт двух матриц с формулой,
Чтобы видеть это, можно вычислить продукт двух матриц.
A = [1 3;2 4]
A = 1 3 2 4
B = [3 0;1 5]
B = 3 0 1 5
A*B
ans = 6 15 10 20
Предыдущее матричное произведение не равно следующему поэлементному произведению.
A.*B
ans = 3 0 2 20
Следующая таблица предоставляет сводные данные матричных арифметических операторов в MATLAB. Для функционально-специализированной информации щелкните по ссылке к странице ссылки на функцию в последнем столбце.
Оператор | Цель | Описание | Страница с описанием |
---|---|---|---|
| Умножение матриц |
| mtimes |
| Матричное левое деление |
| mldivide |
| Матричное правое деление |
| mrdivide |
| Матричная степень |
| mpower |
| Комплексное сопряженное транспонирование |
| ctranspose |