single precision mode and difference between Matlab and cortex-m

5 vues (au cours des 30 derniers jours)
mohammad.H Bagherian
mohammad.H Bagherian le 31 Mai 2021
Commenté : Jan le 1 Juin 2021
Hi,
I have a kallman function that it wrote in double precision and I want to convert it to single precision, is there a normal way?
I find out I have to use Single Fcn but I think if I wrote Single Fcn for every vector it's really weird.
But why I want to use single-precision!!! I should implement this filter on stm32f4 with DSP CMSIS and compare data!
another question is that why there is a difference between float in stm32f4 and single in Matlab?
let's assume a variable
>>a=0.06;
>>x=single(a);
single
0.0600
but in microcontroller
float a=0.06;
when I watch a:
0.0599999986

Réponse acceptée

Jan
Jan le 31 Mai 2021
Modifié(e) : Jan le 31 Mai 2021
This is the expected behaviour.
There is not exact representation of 0.06 in IEEE 754 32 bit floating point numbers, neither in Matlab nor in C. See:
a = single(0.06)
fprintf('%.16g', a)
>> 0.05999999865889549
% 0.0599999986 % From your output
The 0.06 displayed my Matlab is a rounded output.
"is there a normal way?" - It is hard to guess, what you call "normal". Matlab's default type is double, so if you want single precision, you have to include the corresponding command.
  2 commentaires
mohammad.H Bagherian
mohammad.H Bagherian le 1 Juin 2021
thanks for your share,
i think a normal ways is one line command to change precision. for example write
precision single
or somthing simlar to it... is there any command?
Jan
Jan le 1 Juin 2021
No, not in Matlab.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by