필터 지우기
필터 지우기

Combine matrixes with like same values

조회 수: 2 (최근 30일)
Conner Carriere
Conner Carriere 2022년 11월 11일
댓글: Conner Carriere 2022년 11월 21일
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

채택된 답변

Jan
Jan 2022년 11월 11일
편집: Jan 2022년 11월 11일
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(:))
result = 3×1 cell array
{2×4 double } {2×4 double } {[8 58 230 546]}
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
result = 1×3 cell array
{2×4 double} {2×4 double} {[8 58 230 546]}
  댓글 수: 5
Conner Carriere
Conner Carriere 2022년 11월 21일
What would with that simple loop if I wanted to add another set of numbers to it. This one would be tied to the bounding box. Wherever the bounding box moves, the value would be "tied" to it and relocate to where it does. I changed the question to match
Conner Carriere
Conner Carriere 2022년 11월 21일
realized I can run the function twice and combine them... Its late

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Feature Detection and Extraction에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by