尽量改为向量化处理,比如:
for a=1:94;
d(a)=1;
end
可以改为d(1:94)=1;如果你d在前面未定义,就直接用d=ones(1,94);
for r=1:1280;
for k=1:960;
m1(k,r)=0;
for a=1:94;
if map(k,r)==1 & a<=84; %其中map为一幅图像的二进制图像。
mm1(a)=d(a)*50;
else
mm1(a)=d(a)*20;
end
m1(k,r)=m1(k,r)+mm1(a);
end
end
end
可以改为:
m1=zeros(1280,960);% if m1 has been defined previously, try m1(1:1280,1:960)=0;
下面的循环很麻烦,看不懂,自己考虑进行改进,其实不用这样的循环,如果没理解错的话,map里面有多少个1,就循环for a=1:94; ... ; end多少次,你可以直接算有多少个1,然后直接乘或者加就好了。
for r=1:1280
for k=1:960
for a=1:94
if map(k,r)==1 & a<=84; %其中map为一幅图像的二进制图像。
mm1(a)=d(a)*50;
else
mm1(a)=d(a)*20;
end
m1(k,r)=m1(k,r)+mm1(a);
end
end
end