MATLAB: Averaging specific elements from array

arraymean

Can I average specific elements on an array while ignoring others efficiently? For example, if have a text file like so:
Freq Force etc.
5 654 ....
5 754 ....
5 645 ....
10 1029 ....
10 1175 ....
10 1110 ....
15 1354 ....
15 1375 ....
15 1390 ....
Can I easily get the result:
Freq Force etc.
5 684 ....
10 1105 ....
15 1373 ....

Best Answer

You could use dlmread and accumarray:
>> M = dlmread('temp3.txt','',1,0)
M =
5 654
5 754
5 645
10 1029
10 1175
10 1110
15 1354
15 1375
15 1390
>> [~,~,X] = unique(M(:,1));
>> A = accumarray(X,M(:,2),[],@mean)
A =
684.33
1104.67
1373.00
Tested on the file attached to this answer.
Related Question