How does one plot a histogram from the histogram counts?

I have produced an array of counts, specifically produced with:
histcounts
the reason I do this is because storing the actual data is way to expensive in terms of storage. So on the fly I update my histcount. Now that I have them, how do I plot the histogram?
----
demo code:
W_hist_counts = zeros(1,D);
for i=2:iter+1
W = get_vector_we_want_stats(W)
%
W_hist_counts = W_hist_counts + histcounts(W,nbins);
end
----

回答(2 个)

The most straightforward way is probably to use the bar command.

4 个评论

there is a weird caveat what the number of hist_counts and edges dont agree when returned by hist_counts. Do you know how to fix this?
If the edges are regularly spaced, this is what I do to create a vector of centers for the bar plot:
e = 1:5 % ‘Edges’ Vector
xt = e(1:end-1)+mean(diff(e))/2 % ‘Midpoint’ Vector
e =
1 2 3 4 5
xt =
1.5 2.5 3.5 4.5
also, bar doesn't accept normalization options. I know histcounts does but that forces me to have all the data before I feed it to histcounts, which I don't have because I am in the real of big data. I can produce statistics (like counts) on the fly but not store the whole thing in matlab.
I assume you want to normalize to an overall sum of 1. You should just be able to plot
W_hist_counts/sum(W_hist_counts)
to normalize, right?

请先登录,再进行评论。

histogram() can plot the histogram data (counts vs values) if you pass in the counts and values instead of the data. Otherwise you can do it manually with bar().

类别

在 帮助中心 和 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