chop doesn't chop very small numbers

6 visualizaciones (últimos 30 días)
Alec Poulin
Alec Poulin el 1 de Oct. de 2018
Editada: Alec Poulin el 2 de Oct. de 2018

I have a small number, say 1e-14, and I want to chop it to three decimals. In this case, it should give 0. Yet:

>> chop(1e-14, 3)
ans =
   1.0000e-14

What is going on?

  3 comentarios
Star Strider
Star Strider el 1 de Oct. de 2018
The only reference I can find on an InterWeb search is the Wolfram function Chop—Wolfram Language Documentation (link).
I cannot find any documentation for a function of that exact name in MATLAB in a similar search.
Alec Poulin
Alec Poulin el 2 de Oct. de 2018
Editada: Alec Poulin el 2 de Oct. de 2018
That is weird, I cannot remember where I learned about this function. Anyway, on my computer, the file chop.m is located in /usr/local/MATLAB/R2018a/toolbox/control/ctrlobsolete. But then, I just saw that there is the word "obsolete" in the directory name...

Iniciar sesión para comentar.

Respuesta aceptada

Steven Lord
Steven Lord el 1 de Oct. de 2018
I believe chop is an old function from Control System Toolbox. I recommend using round instead. The default behavior of round is to round to N decimals but you can also use it to round to N significant digits (which is what chop(X, N) does.)
>> x = 1e-14;
>> round(x, 3)
ans =
0
>> round(x, 3, 'significant')
ans =
1.0000e-14

Más respuestas (0)

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by