2014-02-23 119 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