2016-11-30 220 views
0

我有一個矩陣train3。如何從矩陣中選擇具有特定列值的行?

1 2 3 4 5 6 7 
2 12 13 14 15 16 17 
3 62 53 44 35 26 17 
4 52 13 24 15 26 37 

我想只選擇其第1列包含特定值(在我的情況1和2)的那些行。

我曾嘗試以下,

>> train3 
train3 = 
    1 2 3 4 5 6 7 
    2 12 13 14 15 16 17 
    3 62 53 44 35 26 17 
    4 52 13 24 15 26 37 

>> ind1 = train3(:,1) == 1 
ind1 = 
    1 
    0 
    0 
    0 

>> ind2 = train3(:,1) == 2 
ind2 = 
    0 
    1 
    0 
    0 

>> mat1 = train3(ind1, :) 
mat1 = 
    1 2 3 4 5 6 7 

>> mat2 = train3(ind2, :) 
mat2 = 
    2 12 13 14 15 16 17 

>> mat3 = [mat1 ; mat2] 
mat3 =                                   
    1 2 3 4 5 6 7 
    2 12 13 14 15 16 17 

>> 

有沒有什麼更好的方法來做到這一點?

回答

2

想必你正試圖獲得在一個單一的步驟MAT3,你可以用做:

mat3 = train3(train3(:,1)==1 | train3(:,1)==2,:) 
2

一個更普遍的方式來做到這一點是使用ismember來獲取所有匹配的行列表中的值:

train3 =[ 
    1 2 3 4 5 6 7 
    2 12 13 14 15 16 17 
    3 62 53 44 35 26 17 
    4 52 13 24 15 26 37]; 

chooseList = [1 2]; 

colIndex = ismember(train3(:, 1), chooseList); 

subset = train3(colIndex, :); 

subset = 

    1  2  3  4  5  6  7 
    2 12 13 14 15 16 17 
相關問題