【问题标题】:Remove Non-repeating Values from an Array从数组中删除非重复值
【发布时间】:2014-01-29 19:53:39
【问题描述】:

我有一个大型数组,其中重复某些行值(最多重复 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 函数

【问题讨论】:

  • 我想删除所有非重复值并保留所有重复值的所有实例。排序没问题。

标签: arrays matlab repeat


【解决方案1】:

您可以这样使用histc,与ismemberfindunique 结合使用:

[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

【讨论】:

    【解决方案2】:

    排序的方法也很简单:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 2019-10-19
      • 2021-07-29
      • 2021-04-02
      相关资源
      最近更新 更多