Using histogram() data without plotting or calculating the figure.
Mostrar comentarios más antiguos
Hi, this is my first post here.
I really need to optimize a function so as to make it as fast as possible. In it, I use the histogram function. All I need is the histogram().Values and histogram().BinEdges data. I don't need to plot anything and I need to keep the computation time to the bare minimum. The code I use is roughly:
fig=figure; set(fig,'visible','off');
H=histogram(...);
h=H.Values;
b=H.BinEdges;
% Some data treatment
%%%%
close(fig);
By doing 'tic-tocs' I found out that these precise lines were taking up 90% of the execution time. Is there any way to have access to the histogram data without opening a figure, or any other way of optimizing time ? I mean not opening a figure at all, not just hiding it, as I've already done that.
Thanks in advance !
1 comentario
Erik Lindskog
el 12 de Oct. de 2022
Possibly a different way to compute a histogram without plotting a figure is to use the function histcounts to compute the histogram counts and edges. Later the histogram can then be plotted with the histogram function.
E.g.:
[counts, edges] = histcounts(data, 100) % Computes the histogram counts and edges for 'data' without plotting
...
histogram('BinEdges', edges, 'BinCounts', counts) % Plots a histogram with edges 'edges' and counts 'counts'.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Data Distribution Plots en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!