exponenta event banner

mtimes, *

Умножение матрицы

Синтаксис

Описание

пример

C = A*B - матричное произведение A и B. Если A является m-by-p и B является матрицей p-by-n, то C является матрицей m-by-n, определяемой

C (i, j) =∑k=1pA (i, k) B (k, j).

Это определение говорит, что C(i,j) является внутренним продуктом iтретий ряд A с j4-я колонна B. Это определение можно записать с помощью оператора двоеточия MATLAB ® как

C(i,j) = A(i,:)*B(:,j)
Для нескалярных A и B, количество столбцов A должно равняться количеству строк B. Матричное умножение не является универсально коммутативным для нескалярных входов. То есть A*B обычно не равно B*A. Если хотя бы один вход скалярен, то A*B эквивалентно A.*B и является коммутативным.

C = mtimes(A,B) является альтернативным способом выполнения A*B, но используется редко. Он обеспечивает перегрузку оператора для классов.

Примеры

свернуть все

Создайте вектор строки 1 на 4, Aи вектор столбца 4 на 1, B.

A = [1 1 0 0];
B = [1; 2; 3; 4];

Умножиться A времена B.

C = A*B
C = 3

Результатом является скаляр 1 на 1, также называемый скалярным произведением или внутренним произведением векторов A и B. Кроме того, можно вычислить A⋅B скалярного произведения с помощью синтаксиса dot(A,B).

Умножиться B времена A.

C = B*A
C = 4×4

     1     1     0     0
     2     2     0     0
     3     3     0     0
     4     4     0     0

Результатом является матрица 4 на 4, также называемая внешним произведением векторов A и B. Внешнее произведение двух векторов, A⊗B, возвращает матрицу.

Создайте два массива, A и B.

A = [1 3 5; 2 4 7];
B = [-5 8 11; 3 9 21; 4 0 8];

Рассчитать произведение A и B.

C = A*B
C = 2×3

    24    35   114
    30    52   162

Вычислить внутреннее произведение второй строки A и третья колонка B.

A(2,:)*B(:,3)
ans = 162

Этот ответ тот же, что и C(2,3).

Входные аргументы

свернуть все

Операнды, заданные как скаляры, векторы или матрицы.

  • Если хотя бы один вход скалярен, то A*B эквивалентно A.*B. В этом случае нескалярный массив может быть любого размера.

  • Для нескалярных входов, A и B должны быть 2-D массивами, где количество столбцов в A должно быть равно количеству строк в B.

  • Если один из A или B является целым классом (int16, uint8,...), то другой вход должен быть скаляром. Операнды с целочисленным типом данных не могут быть сложными.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | duration | calendarDuration
Поддержка комплексного номера: Да

Выходные аргументы

свернуть все

Произведение, возвращаемое как скаляр, вектор или матрица. Множество C имеет то же количество строк, что и входные A и то же количество столбцов, что и входные B. Например, если A является пустой матрицей m-by-0 и B является пустой матрицей 0 на n, то A*B - матрица m-на-n нулей.

Совет

  • С цепными матричными умножениями, такими как A*B*C, вы можете увеличить время выполнения, используя круглые скобки для определения порядка операций. Рассмотрим случай умножения трех матриц на A*B*C, где A 500 на 2, B 2 на 500, и C 500 на 2.

    • Без скобок порядок операций слева направо, так что A*B вычисляется первым, который формирует матрицу 500 на 500. Эта матрица затем умножается на C чтобы получить результат 500 на 2.

    • Если вместо этого указать A*(B*C), то B*C умножается первым, создавая матрицу 2 на 2. Малая матрица затем умножается A получить тот же самый результат 500 на 2, но с меньшим количеством операций и меньшим промежуточным использованием памяти.

Расширенные возможности

..

Создание кода HDL
Создание кода Verilog и VHDL для проектов FPGA и ASIC с использованием Coder™ HDL.

Представлен до R2006a