2015-07-10 109 views
1

我正在通过使用向量乘法而不是for循环来优化MatLab脚本。在那里,我遇到了矢量选择的问题。Matlab矩阵乘法元素明智地从不同大小的矩阵

在我的计算中,我得到了两个矩阵,M1(x,x,x,x)M2(x,x)。当我尝试对这些矩阵进行矢量化并将它们乘以元素时,出现错误。它们的尺寸不匹配。

product = M1(1,1,:,1) .* M2(:,1) 

size(M1(1,1,:,1) -> 1 1 6 
size(M2(:,1)) -> 6 1 

如果我使用命令squeeze M1它正在工作。

product = squeeze(M1(1,1,:,1)) .* M2(:,1) 

的问题是,挤压需要非常多的时间(1/5 of the complete time -> ~50s)。我怎样才能继续使用我的矩阵而不使用挤压?任何人有一个想法?

感谢您的帮助!

+0

?显示更多相关的代码? – Divakar

回答

0

shiftdim通常更快,所以你在循环中使用它们尝试

product = shiftdim(M1(1,1,:,1),2) .* M2(:,1)