各位好~~~
想請問各位有方法能夠簡化.使程式跑快一點嗎~…
主要是 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, 請問您有比較快的寫法嗎?謝謝