Наружное произведение двух прямоугольных матриц в matlab - PullRequest
0 голосов
/ 19 февраля 2019

Если у меня есть вектор r, я могу легко рассчитать его внутреннее произведение

 r=[1 2 3];
 inner = r*r'

inner =

 14

То же самое касается внешнего произведения

outer=r'*r

outer =

 1     2     3
 2     4     6
 3     6     9

external, как и должно быть, имеет NxNкомпоненты (где N - общее количество компонентов, здесь 3).внутри, с другой стороны, имеет компоненты mxm (где m - количество строк, здесь 1).Я хочу быть в состоянии сделать эту стандартную вещь с прямоугольными матрицами тоже.Внутреннее произведение прямоугольных матриц достаточно просто:

 r =

 1     2     3
 1     1     1

inner=r*r'

inner =

  14     6
  6     3

inner имеет компоненты (2x2 = 4), и это то, что я ожидаю от умножения матрицы r на ее транспонирование.Понятно, однако, что неясно, как мне рассчитывать внешний продукт с самим собой, потому что теперь определения «внутренний продукт с транспонированием» и «внешний продукт с самим собой» имеют одинаковый синтаксис в matlab.Действительно, если я попытаюсь повторить то, что я сделал для вектора r, я получу:

outer=r'*r

outer =

 2     3     4
 3     5     7
 4     7    10

, который не является внешним произведением r на себя, как это видно из того факта, что он не имеетNxN = 36, но только nxn = 9 компонентов (где n - номер столбца).То, что Matlab интерпретировал мои вычисления, является внутренним произведением r-транспонса и r.Как получить правильный внешний продукт, компоненты которого представляют собой все комбинации продуктов между компонентами г?

1 Ответ

0 голосов
/ 19 февраля 2019

Матлаб делает только для вычисления умножения матрицы .

Полагаю, вам нужен продукт Kronecker .Это можно сделать с помощью функции крон в Matlab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...