Error in matlab function
Afficher commentaires plus anciens
Hi,
does anybody knows why matlab doesn't calculate the correct value of a function?
I have the function: err_acc = err_acc + (err_corr * dt);
where: err_acc = 0; dt = 0.02; err_corr = -6
and the answer is always 0.
Everything is in int32 type.
Thanks for any help.
Best Regards.
2 commentaires
Leonardo Tommasini
le 7 Nov 2017
Steven Lord
le 7 Nov 2017
Show your exact code. My guess is that you're assigning the result of that computation in double back into an element of an int32 array.
Réponse acceptée
Plus de réponses (2)
Cam Salzberger
le 7 Nov 2017
Modifié(e) : Cam Salzberger
le 7 Nov 2017
Hello Leonardo,
If all variables are of int32 datatype, then they can only contain integer values. Thus, dt would contain 0, rather than 0.02, because when a floating point number is cast to an integer datatype, the non-integer part is dropped.
Even if dt is actually a floating point datatype, if you do a double*integer, MATLAB will make the result an integer datatype:
0.02*int32(-6)
ans =
int32
0
-Cam
2 commentaires
Leonardo Tommasini
le 7 Nov 2017
Image Analyst
le 7 Nov 2017
Use double(). See my answer.
Geoff Hayes
le 7 Nov 2017
Leonardo - if you are expecting a non-integer answer, then the fact that all variables are int32 will prevent this. If the variables are doubles, then
err_acc = 0;
dt = 0.02;
err_corr = -6
the answer is
err_acc = err_acc + (err_corr * dt)
err_acc =
-0.1200
Catégories
En savoir plus sur LEGO MINDSTORMS EV3 Hardware dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!