single precision mode and difference between Matlab and cortex-m

2 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Jan
Jan il 31 Mag 2021
Modificato: Jan il 31 Mag 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 Commenti
mohammad.H Bagherian
mohammad.H Bagherian il 1 Giu 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?

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by