mtimes, *

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

Синтаксис

Описание

пример

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

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

В этом определении говорится тот C(i,j) скалярное произведение iстрока th A с jстолбец th 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. В качестве альтернативы можно вычислить скалярное произведение AB с синтаксисом 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. Векторное произведение двух векторов, AB, возвращает матрицу.

Создайте два массива, 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 должны быть 2D массивы где количество столбцов в A должно быть равно количеству строк в B.

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

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

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

свернуть все

Продукт, возвращенный как скаляр, вектор или матрица. Массив C имеет одинаковое число строк как вход A и одинаковое число столбцов как вход B. Например, если A m-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 с помощью HDL Coder™.

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