2011-05-05 21 views
0

創建的數據集陣列(數據)後的問題,我想刪除針對VAR4花費一定值的所有行。以下是我迄今所做的:Matlab的:與從陣列刪除行,如果在一定的條件爲真

for i=1:length(data.perf) 
    if data.Var4(i)==2 
     data(i,:)=[] 
    end 
end 

當然,問題是,數組被每一個較短的運行條件成立,使所有線路進行檢查之前停止。當i=length(data.perf)陣列約50行較短。我想你們會遇到問題。有人可以給我一個優雅的解決方案嗎?我將來不得不經常這樣做。

回答

5

您確定要環路length(data.perf)並不僅僅是length(data)?這不是從上下文清楚,但會更有意義......

的第一個建議:你扭轉循環可以解決陣列的問題變得越來越短(for i = length(data.perf):-1:1 ...)

更優雅的解決辦法是做它沒有for循環

data(data.Var4==2, :) = [];

+0

你的第二個解決方案是更優雅,確實。感謝您的快速回復。一般來說,我對matlab和基於矢量的編程還是很新的。 – Mike 2011-05-05 11:36:53