【问题标题】: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 相乘获得的。

【问题讨论】:

    标签: arrays matlab matrix product multiplication


    【解决方案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 的广播功能这样的加/分钟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多