我将这个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
答案 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