我正在阅读关于documentation的关于matlab的逐元素乘法运算,我遇到了以下示例:
创建行向量a和列向量b,然后将它们相乘。的 1×3行向量和6×1列向量组合产生6×3 所有元素组合都相乘的矩阵。
文档肯定显示了输出,但是它们如何到达大小为6,3
的输出矩阵?通过使用文档中说明的方法,将大小为b
的列向量6,1
和大小为a
的行向量1,3
相乘而获得。
答案 0 :(得分:2)
这称为广播。当一个维度为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
但是广播当然可以提高存储效率。