如何从矩阵中选择具有特定列值的行?
问题描述:
我有一个矩阵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
>>
有没有什么更好的方法来做到这一点?
答
想必你正试图获得在一个单一的步骤MAT3,你可以用做:
mat3 = train3(train3(:,1)==1 | train3(:,1)==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