删除数组中的字符串元素(Matlab)

时间:2015-06-29 16:01:07

标签: string matlab cell-array

我有一个字符串:pairs = ['AA';'AB';'BB';'AC'; 'CC'; 'CB';'DE'; 'BC']

如何删除字符串中包含相同字符的元素,如“AA”,“BB”,“CC”?

预期输出应为:out = ['AB';'AC';'CB';'DE';'BC']

2 个答案:

答案 0 :(得分:3)

使用逻辑索引并比较第一列和第二列:

out = pairs(pairs(:,1)~=pairs(:,2),:)

对于更通用的方法(覆盖具有两个以上字符的行),您可以使用bsxfun创建所有元素彼此相等的行的索引:

allsame = any(~bsxfun(@eq, pairs, pairs(:,1)), 2);
out = pairs(allsame,:);

答案 1 :(得分:1)

如果所有条目只有2个元素,则可以减去每个元素,如果结果为0则两个元素都相同。

示例:

pairs = {'AA';'AB';'BB';'AC'; 'CC'; 'CB';'DE'; 'BC'}

Diffs = cellfun(@(x) diff(x),pairs)

Diffs看起来像这样:

Diffs =

     0
     1
     0
     2
     0
    -1
     1
     1

现在删除这些条目:

pairs(~Diffs) = []

pairs = 

    'AB'
    'AC'
    'CB'
    'DE'
    'BC'