Borrar filtros
Borrar filtros

Anomalous histogram for small argument

1 visualización (últimos 30 días)
Gordon Edwards
Gordon Edwards el 6 de Sept. de 2019
Comentada: Gordon Edwards el 7 de Sept. de 2019
Running the following code from the command line with c = 1e-15 or greater leads to a normal histogram
c = 1e-15; figure; histogram(c * rand(100,1))
histogram1.JPG
Running the following code with c = 1e-16 or less leads to an incorrect histogram
c = 1e-16; figure; histogram(c * rand(100,1))
histogram2.JPG
The problem appears also in apps when the histogram function is invoked.
Is this a bug?
Gordon

Respuesta aceptada

Bruno Luong
Bruno Luong el 7 de Sept. de 2019
Editada: Bruno Luong el 7 de Sept. de 2019
Yes it is a BUG. I chase back and in the file
C:\Program Files\MATLAB\R2019a\toolbox\matlab\datafun\+matlab\+internal\+math\binpicker.m
line #20 (R2019a)
there is a test
if xrange > max(sqrt(eps(xscale)), realmin(class(xscale)))
To me the correct test should be (without sqrt)
if xrange > max(eps(xscale), realmin(class(xscale)))
Now if I change this line and rerun the code
c = 1e-16; figure; histogram(c * rand(100,1))
it produces correct plot
More seriously, the function binpicker is called by HISTCOUNT. So HISTCOUNT is also buggy. Not only plotting but calculation might be wrong.
  1 comentario
Gordon Edwards
Gordon Edwards el 7 de Sept. de 2019
Thanks for your reply.and I believe that you have spotted the error in function binpicker.Since eps(x) ~ 1e-16*x, and in my case xscale and xrange are nearly equal, the condition that
xrange > sqrt(eps(xscale))
leads to xrange >~ 1e-16 which is what I find.

Iniciar sesión para comentar.

Más respuestas (1)

Jackson Burns
Jackson Burns el 7 de Sept. de 2019
Here's a similar question asked a few years ago which was never really solved either. This comment may be your best approach, but I would reccomend just bringing the values to unity with something like this:
c = 1E-16;
figure
mydata = c * rand(100,1);
histogram(mydata./max(mydata))
You could then modify the xticklabels to match whatever the original values were.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by