基于2列[而不是行]的唯一函数&lt; <cell array =“”>&gt; Matlab的</细胞>

时间:2013-04-08 03:43:44

标签: matlab unique

我有一个单元格数组a,内容如下:

a{1}=[1 3 4 5;
      3 3 4 5;
      5 5 4 5;
      2 4 2 6;
      6 5 2 6;
      7 2 3 1;]

如何在2列[第3列和第4列]上应用unique函数,以便它们返回值“3”和“2”。 [由于4,5对有3个重复,对2,6对重复2个。]

非常感谢任何提示。

2 个答案:

答案 0 :(得分:1)

您可以使用:

[B,I,J] = unique(a{1}(:,[3,4]),'rows');
N = hist(J,numel(unique(J)));
N(N~=1)

这会给你:

ans =

     2     3

答案 1 :(得分:0)

您可以按照以下方式执行此操作:

desiredCol=3;
B=unique(a{1}(:,desiredCol));
count=histc(a{1}(:,desiredCol),B);
desiredMat(:,2)= count(count~=1);
multipleOccElm= (count~=1).*B;
desiredMat(:,1)=multipleOccElm(multipleOccElm~=0);

这就是您解释desiredMat

的方法

以第一行为例。第一列将包含该元素。第二列将包含在该特定列中发生的次数。请注意,不会显示单次出现。

对于第4列,这是desiredMat的外观:

desiredMat =

     5     3
     6     2