在MATLAB

时间:2016-11-29 21:16:32

标签: matlab

我有一个大小为A的矩阵p x p和一个向量y = [y1,y2,...,yn]

我想要做的是创建一个大小为p x p x n的3维矩阵,也就是说,它包含n个带,每个带的大小为p x p

如何创建每个乐队?:

每个波段等于矩阵A乘以y中的一个值。例如,第一个频段为A * y1,第二个频段为A * y2。另一方面,乐队编号i,其中i = 1, ..., n等于A * yi

嗯,这可以使用for循环轻松完成,但这在计算中非常简单且昂贵。如何防止使用for循环?有没有可以直接创建三维矩阵的快速自动方法?

任何帮助将非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用bsxfunp x p矩阵乘以y中的每个值。我们必须将y重塑为1 x 1 x n,以便乘法创建第三维。

out = bsxfun(@times, A, reshape(y, 1, 1, []));

如果您使用的是R2016b或更新版本(当MATLAB引入了隐式广播时),您只需将bsxfun替换为.*

out = A .* reshape(y, 1, 1, []);