accumarray not working on float subscripts

I have an 2D array like the one shown below.
35046, 0.17
1963, 0.34
1135, 0.51
405, 0.68
99, 0.85
1, 0.85
15, 1.02
2, 1.02
I tried using accumarray function in matlab on this data to get the results like this below.
35046, 0.17
1963, 0.34
1135, 0.51
405, 0.68
100, 0.85
17, 1.02
The following is the code snippet for the same.
[num_dist, txt_dist]=xlsread(fname);
num_dist_final(:,1) = accumarray(num_dist(:,2),num_dist(:,1));
num_dist_final(:,2) = unique(num_dist(:,2));
But accumarray throws an error 'Error using accumarray: First input SUBS must contain positive integer subscripts.'.
Is there way where I can use accumarray for float subscripts like the one in this problem?
Any other alternate methods are also welcome.
Thanks in advance.

 Risposta accettata

Stephen23
Stephen23 il 21 Nov 2017
Modificato: Stephen23 il 21 Nov 2017
mat = [
35046, 0.17
1963, 0.34
1135, 0.51
405, 0.68
99, 0.85
1, 0.85
15, 1.02
2, 1.02];
% set tolerance value:
tol = 0.01;
[vec,~,idx] = unique(round(mat(:,2)/tol));
out = [accumarray(idx,mat(:,1)),vec*tol]
giving:
out =
35046 0.17
1963 0.34
1135 0.51
405 0.68
100 0.85
17 1.02

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by