如何加快循环速度?

时间:2019-07-04 19:11:24

标签: matlab

我有一个巨大的矩阵(5000x5000x100),我正在尝试沿第三个维度平滑每个索引,但这需要HOURS。我的工作效率低下。

new_mat=zeros(size(my_mat));
for i = 1:length(mymat)
   for j = 1:length(mymat)
      new_mat(i,j,:) = wdenoise(squeeze(mymat(i,j,:)));
   end
end

我知道数组和索引会有所帮助,但是我不确定如何在此处应用它们。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我无法访问wdenoise所需的更新的Wavelet工具箱,但是如果您提供矩阵,该功能将跨列运行,那么您应该能够删除内部循环,这可能会稍微提高速度:

new_mat=zeros(my_mat)
for i = 1:length(mymat)
    new_mat(i,:,:) = wdenoise(squeeze(mymat(i,:,:)));
end