MATLAB: Sum values corresponding to a number in a vector

vector

4 1
4 10
4 2
8 20
5 12
5 4
5 8
5 6
Suppose I have two vectors, I need average of the digits in second vector corresponding to the digits in the first vector such that the result is
4 13
8 20
5 30

Best Answer

>> M = [4,1;4,10;4,2;8,20;5,12;5,4;5,8;5,6]
M =
4 1
4 10
4 2
8 20
5 12
5 4
5 8
5 6
>> [U,~,X] = unique(M(:,1));
>> S = accumarray(X,M(:,2),[],@sum);
>> [U,S]
ans =
4 13
5 30
8 20