# Addition of identical matrix sections

조회 수: 1(최근 30일)
Tom Engels 2021년 8월 2일
댓글: Tom Engels 2021년 8월 2일
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

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

### 채택된 답변

KSSV 2021년 8월 2일
편집: KSSV 2021년 8월 2일
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
iwant = 3×6
1 2 3 5 6 7 2 3 4 2 3 1 2 4 2 2 2 2
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Tom Engels 2021년 8월 2일
Perfect, that's exactly what I was looking for. Many thanks!!

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

### 범주

Find more on Tables in Help Center and File Exchange

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by