我正在尋找一種方法來「矢量化」下面的代碼。也就是說,我想擺脫for循環,這需要很長時間(for循環嵌套在另一個for循環中,重複次數超過40,000次)。如何使用多個參數在Matlab中執行「查找」?
for k=1:length
if coords(k,1)<=4 && coords(k,2) <=8
upperLeft(countUL,:) = coords(k,:);
countUL=countUL+1;
end
if coords(k,1)>4 && coords(k,2) <=8
upperRight(countUR,:) = coords(k,:);
countUR=countUR+1;
end
if coords(k,1)>4 && coords(k,2) >8
lowerRight(countLR,:) = coords(k,:);
countLR=countLR+1;
end
if coords(k,1)<=4 && coords(k,2) >8
lowerLeft(countLL,:) = coords(k,:);
countLL=countLL+1;
end
end
我試圖在第一次使用Matlab的find
功能(例如find(coords(k,1)<=4)
),但對我來說,我有兩個參數,我需要去「找」。我嘗試了類似find(coords(:,1)<=4 && coords(:,2)<=8)
的東西,但由於&&
的操作數不是標量,所以這不起作用。任何想法如何做到這一點將不勝感激!
我建議你不要使用'length'作爲變量名(或者也許這是一個錯字) – Jonas
使用Matlab的FEX合併器? http://www.mathworks.com/matlabcentral/fileexchange/8354 – bla