Clear Filters
Clear Filters

single precision mode and difference between Matlab and cortex-m

3 views (last 30 days)
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

Accepted Answer

Jan
Jan on 31 May 2021
Edited: Jan on 31 May 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 Comments
mohammad.H Bagherian
mohammad.H Bagherian on 1 Jun 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?

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!