2013-01-09 36 views
3

我有一組數據。爲了簡單起見,我們稱它爲4 x 3矩陣。假設我想在第2列中找到一個數值爲5的數據點。然後,我想在第2列中取所有包含5值的行並將其放置在它自己的數組中。我的數據比下面顯示的數據大得多,所以我不想通過眼睛去查看每一行數據並找出所有5個數據。如何基於列中的特定值從數組中挑選出行?

% My idea of the code: 

    data = [1 2 3 4; 5 5 5 6; 6 4 5 6] 

    if data(:,2) == 5 

    % This is the part I can't figure out 

    end 

讓我們調用finaldata來存儲帶有5的數據的數組。我該怎麼做呢?

+0

謝謝!沒有if語句是必要的。 – user1965021

回答

0

可以使用FIND功能來搜索值,並給出了COORDS回(這可能是一個向量)來檢索行:爲什麼不使用邏輯索引

data(find (data(:,2)==5),:) 

Performance

6

您應該使用logical indexing

all_fives_rows = data(data(:, 2) == 5, :) 
+1

我想你的意思是'數據(數據(:,2)== 5,:);' - OP要求所有*行與列5中的5 :-)但是,我同意邏輯索引是正確的解決這個問題的方法(+1)。對於其他讀者來說,這絕對是比使用'find'更好的解決方案(正如其他答案中所建議的那樣)。 –

+0

@ColinTBowers,oooops,當然,這就是我的意思 - 謝謝。固定。 –

+0

data(find(data(:2)== 5),:)做同樣的事情不是嗎? –

相關問題