【问题标题】:Matlab - filter out identical cell entriesMatlab - 过滤掉相同的单元格条目
【发布时间】:2015-04-15 22:37:38
【问题描述】:

我的矩阵是一个 10000 x 2 的矩阵。看起来像这样:

安贝丝

鲍勃·皮特

山姆

詹特德

...

两列中有许多具有相同名称的行(如 Sam)。我只需要具有不同名称的行。我想到了一个带有 ismember/string 比较的 for 循环,但这非常慢,并且有一些这样的矩阵。 另一个也很慢的选项是唯一的第一列并运行一个 for 循环以查找唯一值并在每次 find 的值相同时删除。但是,这也很慢。请帮忙优化。 谢谢

【问题讨论】:

    标签: string matlab compare


    【解决方案1】:

    您可以使用strcmp 获取对应于相同行的索引的逻辑数组,即将第 1 列与第 2 列进行比较并删除对应于 1 的索引的行。

    Example:
    
    C = {'Ann' 'Beth';
    
    'Bob' 'Pete';
    
    'Sam' 'Sam';
    
    'Jen' 'Ted'};
    
    idx = strcmp(C(:,1),C(:,2))
    

    这里idx 看起来像这样:

    idx =
    
         0
         0
         1
         0
    

    因此第 3 行包含相同的名称。现在删除那些:

    C(idx,:) = [];
    
    C = 
    
        'Ann'    'Beth'
        'Bob'    'Pete'
        'Jen'    'Ted' 
    

    【讨论】:

      猜你喜欢
      • 2018-09-06
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多