各位好~~~
想请问各位有方法能够简化.使程式跑快一点吗~…
主要是 if elseif…那一段会花比较久的时间QQ
已经想了好久了 还是不知道如何简化
现在跑一次大概需要5分钟…而我有十几万次orz
拜托各了…谢谢
for yy=1:2:47
in = inpolygon(line_all(:,yy),line_all(:,yy+1),q(:,2),q(:,3));
in2=double(in); %%把逻辑值换成数值
if exist('final_length')~=1
final_length=[];
end
aab=[];aac=[];aad=[];
if sum(in2(1:100,1))==0
aac=[aac;nan,nan,200];
elseif in2(1,1)==1
aad=[aad;line_all(1,yy:yy+1),2];
else
qqqq2=double(diff(in2)==1);
[row,col] = find(qqqq2(:,1)==1);
qqqq3=(row(1,1)+1)
aab=[aab;line_all(qqqq3,yy:yy+1),qqqq3*2];
end
if isempty(aac)==1&&isempty(aad)==1
final_length=[final_length;aab(1,:)];
end
if isempty(aac)~=1
final_length=[final_length;aac(1,:)];
end
if isempty(aad)~=1
final_length=[final_length;aad(1,:)];
end
end
大概就是我要判断一个100*1的矩阵(称为a,都是由0,1组成),
如果(1)这一百个值总和为零就给代码200,(2)如果a(1,1)=1则给代码2,
(3)若后格减前格=1则给后格的row*2......。
若(1)符合则不做(2)( 3)..
.实在想不出比较快的写法,所以才用isempty, 请问您有比较快的写法吗?谢谢