Если у меня есть вектор 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.Как получить правильный внешний продукт, компоненты которого представляют собой все комбинации продуктов между компонентами г?