mtimes, *

Матричное умножение

Синтаксис

Описание

пример

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

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

Это определение говорит, что C(i,j) является скалярным произведением iпервая строка A с j1-й столбец 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 должно быть 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 на 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