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.

 采纳的回答

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

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by