数组 – 通过乘以向量将2D矩阵扩展为3D矩阵

参见英文答案 > Multiply 2D Matrix with vector to span third dimension – MATLAB                                    1个
这就是我想要实现的目标:

我有一个矩阵C.

C=[1 2 3; 4 5 6; 7 8 9];

和矢量a

a=[1 2];

我想做一个这样的操作,a矢量的每个元素乘以C(标量乘法),out出现一个三维数组D:

(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


(:,:,2) =

     2     4     6
     8    10    12
    14    16    18

它肯定会在循环中起作用,但是,由于我需要在多个场合进行此操作,因此oneliner将是一个很好的保护程序.

最佳答案
这是使用bsxfunreshape的一个很好的例子.虽然@thewaywewalks建议首先调用bsxfun并重新调整结果,但我建议相反.这使得bsxfun的一个关键概念 – 单例维度扩展 – 更加清晰:

out = bsxfun(@times,C,reshape(a,1,1,[]))

ans(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


ans(:,:,2) =

     2     4     6
     8    10    12
    14    16    18

通过重塑(a,1,1,[]),您可以在第三维中创建.如果现在应用bsxfun,它会将矩阵C与a的每个元素相乘.

转载注明原文:数组 – 通过乘以向量将2D矩阵扩展为3D矩阵 - 代码日志