Как создать матрицу из произведения всех элементов в два массива? - PullRequest
1 голос
/ 21 мая 2019

Я читал документацию для matlab по поэлементному умножению, и я наткнулся на этот пример:

Создайте вектор строки a и вектор столбца b, затем умножьте их. Вектор строки 1 на 3 и вектор столбца 6 на 1 объединяются, чтобы получить 6 на 3 матрица с умножением всех комбинаций элементов.

Документация, конечно, показала вывод, но как они получили эту выходную матрицу размером 6,3? Который был получен умножением вектора столбца b размера 6,1 и вектора строки a размера 1,3 с использованием методов, описанных в документе.

1 Ответ

2 голосов
/ 21 мая 2019

Это называется трансляцией. Когда одно измерение равно 1, а другое больше, единичное измерение расширяется, как будто с repmat:

 6 1 : column
 1 3 : row
 ------
 6 3 : result

С учетом

a = 1:3
b = [1:6]'
a .* b

примерно эквивалентно

a2 = repmat(a, 6, 1)
b2 = repmat(b, 1, 3)
a2 .* b2

Но, конечно, вещание намного более эффективно использует память.

...