有没有办法对以下内容进行矢量化:
for i = 1:6
te = k(:,:,:,i).*(c(i));
end
我试图将4D矩阵k乘以向量c,将其分解为独立的(3D矩阵*标量)运算。我已经在这个函数文件的while循环中有另外两个不可避免的for循环,并且我尽力避免循环。
对此的任何见解将不胜感激!
-SC
答案 0 :(得分:5)
答案 1 :(得分:1)
除非我遗漏了某些内容,否则这是bsxfun的一个案例:
te=bsxfun(@times, k, permute(c,[3 4 1 2])); % c is a row vector
或
te=bsxfun(@times, k, permute(c,[3 4 2 1])); % c is a column vector
这假设k的第四维具有与c相同的尺寸。如果没有,那么您可以使用子矩阵索引:
te=bsxfun(@times, k(:,:,:,1:length(c)), permute(c,[3 4 2 1])); % c is a column vector