Group array in a cell according to their size
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
kix
am 5 Jul. 2020
Kommentiert: kix
am 5 Jul. 2020
Hi everyone!
I've got a cell wich contains array like this : A={[1 2 3 4] [4 5 6 9] [1 2 3] [7 8 9] [1 2] [3 4]}
and I would like to group the arrays in this cell according to their size and get the indexes where they have been found in A and have the following result :
expected_result={{[1 2 3 4] [4 5 6 9]} {[1 2 3] [7 8 9]} {[1 2] [3 4]}}
idx_in_A={[1 2] [3 4] [5 6]}
Thanks in advance
0 Kommentare
Akzeptierte Antwort
Thiago Henrique Gomes Lobato
am 5 Jul. 2020
A direct implementation could be done like this:
A={[1 2 3 4] [4 5 6 9] [1 2 3] [7 8 9] [1 2] [3 4]};
sizes= [];
for idx=1:length(A)
Vsize = length(A{idx});
if ~ismember(Vsize,sizes)
sizes = [sizes,Vsize];
Pos = find(ismember(sizes,Vsize));
idx_in_A{Pos} = idx;
else
Pos = find(ismember(sizes,Vsize));
idx_in_A{Pos} = [idx_in_A{Pos},idx];
end
end
expected_result = cell(length(idx_in_A),1);
for idx= 1:length(idx_in_A)
expected_result{idx} = {A{idx_in_A{idx}}};
end
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Operators and Elementary Operations 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!