2016-11-30 4 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と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 
関連する問題