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.

 채택된 답변

Stephen23
Stephen23 2017년 11월 21일
편집: Stephen23 2017년 11월 21일

0 개 추천

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에 대해 자세히 알아보기

질문:

2017년 11월 21일

편집:

2017년 11월 22일

Community Treasure Hunt

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

Start Hunting!

Translated by