2014-02-23 117 views
0

我有这个MATLAB代码作为我的项目的一部分,根据我从教授的报告得到的信息,大部分时间都花在while循环中。有关如何 我提高效率的任何建议?一般来说,我怎样才能让for循环更有效率?提高多维矩阵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 

回答

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