Output a small number as zero
25 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
S Crombie
el 28 de Feb. de 2018
Comentada: Stephen23
el 1 de Mzo. de 2018
If I type cos(pi/2) the answer comes back as 6.1232e-17 where I know, of course, that the correct answer is zero. What is the best way to get MATLAB intelligently to output zero in place of these very small numbers?
This came up when I was computing a rotation matrix using angles which were simple fractions of pi and one of the elements returned was 24678615572571482867467662723121/6582018229284824168619876730229402019930943462534319453394436096
which ideally would have been rounded to zero.
0 comentarios
Respuesta aceptada
Birdman
el 28 de Feb. de 2018
Editada: Birdman
el 28 de Feb. de 2018
Firstly, you need to read this:
Then, you may do this:
a=cos(pi/2);
if abs(a)<1e-6
a=0;
end
Note that 1e-6 is a tolerance value that user specifies, you can change it if you want.
5 comentarios
Stephen23
el 1 de Mzo. de 2018
" Is it treating my matrix as if it's composed of text strings?"
If they are symbolic variables then it is treating them as symbolic variables. Most likely the problem is how you define those symbolic variable values, e.g. first defining them as double before converting to symbolic, but unless you show us your code then we will have to rely on our magic crystal balls to know.
Más respuestas (0)
Ver también
Categorías
Más información sobre Number Theory en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!