参见英文答案 > 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将是一个很好的保护程序.
最佳答案
这是使用
bsxfun
和reshape
的一个很好的例子.虽然@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矩阵 - 代码日志