Alternative to "round" for accurate accumulation
    3 views (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!

