Addition of identical matrix sections
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Tom Engels
el 2 de Ag. de 2021
Comentada: Tom Engels
el 2 de Ag. de 2021
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 comentarios
Respuesta aceptada
KSSV
el 2 de Ag. de 2021
Editada: KSSV
el 2 de Ag. de 2021
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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrices and Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!