【问题标题】:How to multiply a vector and a 3D matrix如何将向量和 3D 矩阵相乘
【发布时间】:2017-02-06 14:09:07
【问题描述】:

我有一个 20 x 1 的向量 Amp 和一个 3D 矩阵 M 100 x 20 x 100。 我想将 Amp 的每个元素乘以 M 中的相应切片。 我已经通过 for 循环实现了这一点,如下所示:

Result = zeros(100,20,100);
for i=1:20
   Result(:,i,:) = Amp(i)*M(:,i,:);
end 

但我想知道是否有任何方法可以加快速度。 提前致谢

【问题讨论】:

    标签: matlab performance matrix matrix-multiplication


    【解决方案1】:

    方法如下:

    Result = bsxfun(@times,Amp.',M);
    

    【讨论】:

    • 我认为你需要Amp.' 而不是Amp
    • 我试过了,它让它更快,无论如何让它更快?
    • @Alithewise No.
    • @Alithewise 对于您指定的矩阵大小,这实际上需要多少时间?大约一毫秒?你想要多快?
    • @Sardar_Usama 正确。需要转置。
    猜你喜欢
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2016-12-11
    • 2021-12-04
    • 2011-08-06
    • 1970-01-01
    相关资源
    最近更新 更多