Why doesn't num2fixpt function return my expected counterpart fixed point value?

8 views (last 30 days)
Hello,
I am trying to convert from float/double to fixed point notation, for instance let's use the number x = 0.39 as input.
I would like to convert x into its unsigned 16 bits flxed-point counterpart, to do so in C++ I am accustomed to use the expression , this will make that the fixed point version of 0.39 is 25559.
However, I cannot get that result if I make use of num2fixpt function, I am using it in the following way
num2fixpt(0.39, ufix(16))
ans =
0
What am I doing wrong when using num2fixpt function?
Thanks in advance,
Regards

Accepted Answer

Jyotsna Talluri
Jyotsna Talluri on 7 Jul 2020
num2fixpt function does not convert double/float to a fixed point notation, instead it converts value to a nearest value represented by fixed point data type.You can convert double value to fixed point data type using fi
a = fi(0.39);
T = numerictype(0, 16, 0);
c = reinterpretcast(a, T) ;
Refer to the documentatin of numerictype and reinterpretcast
  1 Comment
Javier Cuadros
Javier Cuadros on 7 Jul 2020
Thanks for your reply Jyotsna.
But then, I see that using
a = fi(0.39);
produces
a =
0.3900
Which is my floating point number but not into a fixed point notation, is it?
Thanks again,

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!