提高多维矩阵for循环的效率

时间:2014-02-23 20:39:19

标签: matlab for-loop

我将这个MATLAB代码作为我项目的一部分,根据我从教授报告中获得的信息,大部分时间花在while循环中。关于如何做的任何建议 我提高效率?通常,如何使for循环更有效?

% p is 2D matrix of big size
s=size(p); 
pp=p;
p=zeros(s(1),s(2));

 while(norm(p-pp)>0.05 )
       p=pp;
       for n=1:N 
                  z=0;
                  for miu=1:C
                       z = z + p(n,miu) * funQ(n,miu,p,R,N,C); % call function funQ
                  end  

         for lambda=1:C                            
                  pp(n,lambda) = (p(n,lambda) * funQ(n,lambda,p,R,N,C))/z; % call function funQ
          end 
       end   
 end

1 个答案:

答案 0 :(得分:0)

我不知道funQ的作用,但如果它适合矢量化,那么您可以尝试以下方法:

替换

for miu=1:C
z = z + p(n,miu) * funQ(n,miu,p,R,N,C); % call function funQ
end 

使用

miu=1:C
z = sum(p(n,miu) * funQ(n,miu,p,R,N,C)); % call function funQ

类似地,

替换

for lambda=1:C                            
pp(n,lambda) = (p(n,lambda) * funQ(n,lambda,p,R,N,C))/z; % call function funQ
end 

使用

pp(n,:) = (p(n,lambda) * funQ(n,lambda,p,R,N,C))/z; % call function funQ