how to count unique elements of a cell in matlab?

后端 未结 2 1329
小鲜肉
小鲜肉 2020-11-30 14:36

I want to count unique elements of a cell array in Matlab. How can I do this? Thank you.

c = {\'a\', \'b\', \'c\', \'a\'};
% count unique elements, return th         


        
相关标签:
2条回答
  • 2020-11-30 15:13

    To count unique elements, you can combine UNIQUE with ACCUMARRAY

    c = {'a', 'b', 'c', 'a'};
    [uniqueC,~,idx] = unique(c); %# uniqueC are unique entries in c
                                 %# replace the tilde with 'dummy' if pre-R2008a
    
    counts = accumarray(idx(:),1,[],@sum); 
    

    To produce the structure, use NUM2CELL and STRUCT:

    countCell = num2cell(counts);
    tmp = [uniqueC;countCell']; %'
    
    unique_count = struct(tmp{:}) %# this evaluates to struct('a',2,'b',1,'c') 
    
    unique_count = 
        a: 2
        b: 1
        c: 1
    
    0 讨论(0)
  • 2020-11-30 15:13

    Check out count_unique on the file exchange. It uses accumarray or sort depending upon which is the most appropriate. It will also check for nans/infs.

    0 讨论(0)
提交回复
热议问题