Summing up values of A matrix if it matches the same value in B

Hi everyone, I have 2 matrices A and B
A =[1;
2;
1;
3;
4;
5;
6;];
B = [40.5511;
40.5511;
34.6732;
34.6731;
32.1111;
32.1111;
32.1111;]
I want to create C by summing up the values in A if they have the same corresponding value in B.
C = [3 40.5511;
1 34.6732;
3 34.6731;
15 32.1111;];

 Accepted Answer

One option:
[G,ID] = findgroups(B);
C = [splitapply(@sum,A,G),ID]
C =
15.0000 32.1111
3.0000 34.6731
1.0000 34.6732
3.0000 40.5511

4 Comments

Hi Alex, do you how I can make matrix A with 10 decimal points? like num2str? will it affect the code?
You can change the visualization of your command window using format. Do you mean this?
format short
C =
15.0000 32.1111
3.0000 34.6731
1.0000 34.6732
3.0000 40.5511
format long
C =
15.000000000000000 32.111100000000000
3.000000000000000 34.673099999999998
1.000000000000000 34.673200000000001
3.000000000000000 40.551099999999998

Sign in to comment.

More Answers (0)

Categories

Asked:

JL
on 27 Aug 2019

Commented:

JL
on 27 Aug 2019

Community Treasure Hunt

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

Start Hunting!