Using histogram() data without plotting or calculating the figure.

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 件のコメント

Erik Lindskog
Erik Lindskog 2022 年 10 月 12 日
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'.

サインインしてコメントする。

 採用された回答

Star Strider
Star Strider 2016 年 1 月 9 日

14 投票

If you only want the histogram values and not the plot, use the histcounts (or histc) functions.

5 件のコメント

Thomas Houllier
Thomas Houllier 2016 年 1 月 10 日
Great ! It was exactly the data I needed. It divided the computation time by 10 on the histogram, and that of my whole program by more than 2. Thank you !
Star Strider
Star Strider 2016 年 1 月 10 日
My pleasure!
Amir Pasha Zamani
Amir Pasha Zamani 2021 年 3 月 4 日
But these functions do not provide the edges :(
Steven Lord
Steven Lord 2021 年 3 月 4 日
The second output from histcounts contains the edges.
Amir Pasha Zamani
Amir Pasha Zamani 2021 年 4 月 2 日
Thanks Star
I have the same problem with my codes efficiency
But even with histcount the code is still slow

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Data Distribution Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by