improve speed --- image matrix replace
1 次查看(过去 30 天)
显示 更早的评论
i have a code which has three "for". it's so slow.
if nx=2000,ny=2000. it takes me two minutes to finish replacement.
xfig(nx,ny,3) is a image matrix.
please help me!!
w0=xfig;
nx=length(xfig(:,1,1));%coordinate x
ny=length(xfig(1,:,1));%coordinate y
w1=w0;
for k=1:4
for x=1:nx
for y=1:ny
w1(x,y,:)=w0(mod1(x+y,nx),mod1(x+2*y,ny),:);
end;
end;
%t=1:1:nx;v=1:1:ny;
%w1(t,v,:)=w0(mod1(t+v,nx),mod1(t+2*v,ny),:);
w0=w1;
end;
% if mod(8,4)=0 then it isn't 0, instead of 4
function T=mod1(x,y)
if mod(x,y)==0
T=y;
else
T=mod(x,y);
end
end
1 个评论
回答(1 个)
David Sanchez
2013-5-20
1st: initialize w1
w1 = zeros(nx,ny,3);
The two inner loops do not make use of k, the outer loop index. Why do you have them there? Take them out.
for x=1:nx
for y=1:ny
w1(x,y,:)=w0(mod1(x+y,nx),mod1(x+2*y,ny),:);
end;
end;
what's this for?
for k=1:4
%t=1:1:nx;v=1:1:ny;
%w1(t,v,:)=w0(mod1(t+v,nx),mod1(t+2*v,ny),:);
w0=w1;
end;
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!