如何从两个数组中所有元素的乘积创建矩阵?
Posted
技术标签:
【中文标题】如何从两个数组中所有元素的乘积创建矩阵?【英文标题】:How to create a matrix from product of all elements in two arrays? 【发布时间】:2019-05-21 11:55:08 【问题描述】:我正在阅读 documentation for matlab 关于元素乘法,我遇到了这个例子:
创建一个行向量 a 和一个列向量 b,然后将它们相乘。这 1×3 行向量和 6×1 列向量组合生成 6×3 所有元素组合相乘的矩阵。
文档确实显示了输出,但他们是如何得到 size6,3
的输出矩阵的?这是通过使用文档中解释的方法将大小为6,1
的列向量b
和大小为1,3
的行向量a
相乘获得的。
【问题讨论】:
【参考方案1】:这称为广播。当一个维度为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
当然,广播的内存效率要高得多。
【讨论】:
感谢您的提醒。我从 Matlab 中休息了很长时间(> 5 年),才重新开始使用它。修正了答案。 他们可能会称之为implicit expansion;无论如何,它也适用于像 NumPy 的广播功能这样的加/分钟以上是关于如何从两个数组中所有元素的乘积创建矩阵?的主要内容,如果未能解决你的问题,请参考以下文章