Remove duplicate cells from cell array of different dimensions

1 view (last 30 days)
Hi,
I have a cell array C of nx1, where each cell contains a vector of different values. Each vector has a different length, ranging from 3 to 8 or so. I would like to output another cell array, where all the duplicate cells in C have been removed. I also don't care about the order of the values within each vector. I suppose I could run a giant for loop (in this case n = 900) where I sort each vector with the cells of C and somehow use that.
I've looked up other similar questions online, but the only answers I've found so far only work if the dimensions of C are constant. My only other guess is that maybe I will have to convert it into an array, where there are Nans for the cells whose vectors are not long enough.
Does someone else spot a solution?
Thanks!

Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 13 Jul 2016
A=arrayfun(@(x) randi(10,1,randi([3 8])),1:900,'un',0); % Example
b=cellfun(@(x) sort([x nan(1,8-numel(x))]),A,'un',0)
c=cell2mat(b'')
[~,jj]=unique(c,'rows');
B=A(jj)
  2 Comments
Tyler
Tyler on 13 Jul 2016
Sorry, this does not work when I try it. B outputs a single cell of the first cell of A.
While I don't understand every step, one problem might be that the Nans seem to disappear between b and c. c appears to be a long vector, when it was intended to be an array in order to use unique along the rows...

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!