正如标题所说,我想在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列中的所有可能对进行一般性操作,并且在矩阵中存在的前一行中具有相等的值?
答案 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匹配