single precision mode and difference between Matlab and cortex-m
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
mohammad.H Bagherian
el 31 de Mayo de 2021
Comentada: Jan
el 1 de Jun. de 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
0 comentarios
Respuesta aceptada
Jan
el 31 de Mayo de 2021
Editada: Jan
el 31 de Mayo de 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 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!