MATLAB: Correct use of uint32

MATLABuint

When I do the line
k = idx1* uint32(30e6) + idx2* uint32(0) + idx3* uint32(30e6);
I get an error "Integers can only be combined with integers of the same class, or scalar doubles." However, when I do:
idx1* uint32(30e6);
or
idx1* uint32(30e6) + idx2* uint32(0);
it works. Where am I going wrong? idx is a vector produced by:
idx1 = ( a < b )
where a and b are vectors.

Best Answer

Hi,
idx1 is a logical vector. So the error can be raised with:
logical(1)*uint32(2)
To get it working, cast idx1 to uint32:
uint32(logical(1))*uint32(2)
ans =
2
So in your case:
k = uint32(idx1)* uint32(30e6) + uint32(idx2)* uint32(0) + uint32(idx3)* uint32(30e6);