查找矩阵的行,其中包含有关matlab中某些列的值的条件

时间:2015-10-24 10:04:29

标签: matlab find rows

正如标题所说,我想在Matlab矩阵中找到所有行,在某些列中,行中的值与前一行中的值相等,或者通常在矩阵的某行中相等。例如,我有一个矩阵

1 2 3 4
1 2 8 10
4 5 7 9
2 3 6 4
1 2 4 7

我希望找到以下行:

1 2 3 4 
1 2 3 10
1 2 4 7

我该如何做这样的事情?如何对第1列和第2列中的所有可能对进行一般性操作,并且在矩阵中存在的前一行中具有相等的值?

2 个答案:

答案 0 :(得分:1)

这是一个开始,看看我们是否朝着正确的方向前进:

>> M = [1 2 3 4;
     1 2 8 10;
     4 5 7 9;
     2 3 6 4;
     1 2 4 7];

>> N = M;  %// copy M into a new matrix so we can modify it
>> idx = ismember(N(:,1:2), N(1,1:2), 'rows')

idx =

   1
   1
   0
   0
   1

>> N(idx, :)
ans =

    1    2    3    4
    1    2    8   10
    1    2    4    7

然后你可以从原始矩阵中删除这些行并重复。

>> N = N(~idx,:)
N =

   4   5   7   9
   2   3   6   4

答案 1 :(得分:0)

这会给你结果

=

其中存在向量告诉您该行在另一个矩阵上,并且位置为您提供位置......

不太优雅和简单的版本

data1 =[1 2 3 4
1 2 8 10
4 5 7 9
2 3 6 4
1 2 4 7];

data2 = [1 2 3 4 
1 2 3 10
1 2 4 7];

[exists,position] = ismember(data1,data2, 'rows')

matchmatrix将作为连接矩阵读取,其中值1表示哪一行data1与哪一行data2匹配

相关问题