Combine matrixes with like same values
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Conner Carriere
am 11 Nov. 2022
Kommentiert: Conner Carriere
am 21 Nov. 2022
I know this has been asked before, but im just not sure how to approach it.
I have a cell that looks
bbox
[0,241,637,168]
[204,181,382,286]
[56,314,185,243]
[0,59,574,506]
[8,58,230,546]
and another "key" cell that looks like this
1
1
2
2
3
I also have a cell that called "class"
5
11
12
9
10
I need an output like this
row bbox class
1 [0,241,637,168; 204,181,382,286] [5;11]
2 [56,314,185,243; 0,59,574,506] [12;9]
3 [8,58,230,546] [10]
Any info would help, I am sure that it uses either the unique() or accumarray() function
0 Kommentare
Akzeptierte Antwort
Jan
am 11 Nov. 2022
Bearbeitet: Jan
am 11 Nov. 2022
bbox = {[0,241,637,168]; ...
[204,181,382,286]; ...
[56,314,185,243]; ...
[0,59,574,506]; ...
[8,58,230,546]};
key = [1, 1, 2, 2, 3];
result = splitapply(@(c) {cat(1, c{:})}, bbox, key(:))
Another option is a simple loop:
ukey = unique(key);
result = cell(numel(ukey), 1);
for k = 1:numel(ukey)
result{k} = cat(1, bbox{key == ukey(k)});
end
result
5 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing 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!