1. This solution is much faster on re-invocation than the one without the persistent num_ones variable. Unless of course it is performed on a much larger (than num_ones) array of 32-bit integer.
2. It is essential to have the statement
x= double(x);
The reason for this is that the floor() function has a problem with precision. If can fail with 32-bit integer that are close to 2^32.
For instance, consider this Matlab code and system response:
>> p=uint32(4294946031)
p =
uint32
4294946031
>> floor(p/65536)
ans =
uint32
65536
Find state names that start with the letter N
640 Solvers
The Hitchhiker's Guide to MATLAB
2887 Solvers
61 Solvers
Convert hex color specification to MATLAB RGB
147 Solvers
Calculate the Hamming distance between two strings
180 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!