How can I remove identical cell entries containing small arrays
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alan Meier
am 6 Apr. 2020
Kommentiert: Alan Meier
am 8 Apr. 2020
I have a matlab cell. Each cell entry is containing a relatively small 2xn array of numbers. Some of these arrays are identical and therefor I want to remove the duplicated cell entry. I have found solutions in case I would have strings, string/characters, characters or numbers, but none for whole arrays inside a cell.
(Although shown here, the arrays are not always just twice in the cell.)
3 Kommentare
dpb
am 7 Apr. 2020
if ismember(A_tmp{i}, A) == 0 %
A_tmp{} is the content of a cell while A is a cell (empty at first but still a cell). cell2mat exists to convert anyways. Not sure what you're trying to do here??? Why the catenation?
Also, ismember returns a logical array, not just a true|false so if content is more than a single element the return is a vector, not a value
all() might be of help here in that regards but I'd still look at converting the cells to arrays, and if want someone to actually try test code, providing them a sample dataset would likely induce a higher likelihood... :)
Akzeptierte Antwort
Stephen23
am 7 Apr. 2020
Two efficient loops, no third-party functions:
S = load('example.mat');
C = S.connect_group;
N = numel(C);
X = true(1,N);
for ii = 1:N
for jj = ii+1:N
if isequal(C{ii},C{jj})
X(ii) = false;
break
end
end
end
D = C(X);
Weitere Antworten (2)
Birdman
am 7 Apr. 2020
The following code should simply do the job for you:
unique(cell2mat(connect_group),'rows')
After this, you can regroup the arrays however you want.
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!