Addition of identical matrix sections
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello all,
I have the following problem:
I have a nx6 matrix with floating point numbers. Now I want to take the first three columns and see if there are duplicates. The duplicates found are then to be combined with each other. The data of the first three columns should not change and only columns 4 to 6 should be added up. The duplicates of the first three columns are then deleted.
Here is an example:
A = [1 2 3 4 5 6; ...
2 3 4 2 3 1; ...
2 4 2 2 2 2; ...
1 2 3 1 1 1];
--> Reduce
A_new = [1 2 3 5 6 7; ...
2 3 4 2 3 1; ...
2 4 2 2 2 2];
Unfortunately, I could not achieve success with splitapply and accumarray. Is there another Matlab function that can do this or do I have to handle this with an if statement?
Regards
Tom
댓글 수: 0
채택된 답변
KSSV
2021년 8월 2일
편집: KSSV
2021년 8월 2일
Read about unique.
A = [1 2 3 4 5 6; ...
2 3 4 2 3 1; ...
2 4 2 2 2 2; ...
1 2 3 1 1 1];
[c,ia,ib] = unique(A(:,1:3),'rows') ;
m = size(c,1) ;
n = size(A,2) ;
iwant = zeros(m,n) ;
iwant(:,1:3) = c ;
for i = 1:m
iwant(i,4:end) = sum(A(ib==i,4:end),1) ;
end
iwant
댓글 수: 3
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!