从数组中删除非重复值

时间:2014-01-29 19:53:39

标签: arrays matlab repeat

我有一个大数组,其中某些行值重复(最多8次重复)。我怎样才能拉出重复的行值及其后续列?

我应该提到第一列是一个ID列(我想查找重复列),但重复的ID值具有不同的列值。

ID = [1;2;4;10;7;1;5;4] 

我想找到1和4

两个实例的第n行

输出应为:

ID = [1;4;1;4]  

或排序版本:

ID=[1;1;4;4]

任何一个版本都可行。

我相信我需要一个循环并使用find函数

2 个答案:

答案 0 :(得分:2)

您可以这样结合histcismemberfind使用unique

[n, bin] = histc(A, unique(A));
multiple = find(n > 1);
index = find(ismember(bin, multiple))
index =
     1
     3
     6
     8

给出了:

ID(index)
     1
     4
     1
     4

答案 1 :(得分:2)

排序方法也很简单:

ID = sort(ID);
index = find(ID(2:end) == ID(1:end-1));
ID = ID(index);