Alternative to "round" for accurate accumulation
1 view (last 30 days)
Show older comments
I have a vector
A=[0.970, 0.486, 0.439, 0.0143, 0] % Ref vector from Algorithm-1
B=7 % Final sum expected from A
A1=A/sum(A) % Proportionate for sum==1
B1=round(A1*B)
B1=[4 2 2 0 0] %Sum is 8 (not 7)
The objective is to convert vector A into integer such that the sum is B=7. Is there any matlab function by which sum of 7 can be achieved. Or can you please suggest other way. Kindly note that A changes in every iteration.
2 Comments
madhan ravi
on 28 Aug 2018
Can you elaborate what you are trying to do and what you are trying to achieve?
Accepted Answer
Stephen23
on 28 Aug 2018
>> n = fzero(@(k)sum(round(A*k))-7,[0.01,100])
n = 3.4811
>> V = round(A*n)
V =
3 2 2 0 0
>> sum(V)
ans = 7
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!