Remove duplicate cells from cell array of different dimensions

4 Ansichten (letzte 30 Tage)
Tyler
Tyler am 13 Jul. 2016
Kommentiert: Azzi Abdelmalek am 13 Jul. 2016
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!

Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 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 Kommentare
Tyler
Tyler am 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...
Azzi Abdelmalek
Azzi Abdelmalek am 13 Jul. 2016
You can post a short example and explain what you want

Melden Sie sich an, um zu kommentieren.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by