无论如何在MATLAB中找到直方图值的密度?

时间:2015-07-20 22:06:15

标签: matlab histogram distribution probability-density

我有7个向量,范围介于0和0.99之间。每个向量中的条目数是不同的,因此它将是“不公平的”#34;比较它们的直方图,因为假设变量是间隔的,在bin计数和条目数之间应该存在直接相关性。我对绘制值密度的平滑曲线感兴趣。因此,对于具有0和0.99的n值的向量a,我希望x轴为0到0.99,其中y轴是与这些值相关联的概率。

任何想法或见解?

2 个答案:

答案 0 :(得分:0)

不确定你想要什么样的平滑,但有些想法如何开始:

%some example vectors of different length
p=[10,100,1000,10000];
D=arrayfun(@(x)(rand(x,1)),p,'uni',false);
%defining the range
support=[0:.1:1];
%make sure we don't miss a value
esupport=support;
esupport(end+1)=inf;
%define a function which uses histc to calculate the emperical probability for each bin
epdf_bin=@(x)histc(x,esupport)/numel(x);
%evaluate emperical probability
E=cellfun(epdf_bin,D,'uni',false);

M=cat(2,E{:});
%plot
bar(M);
%print legend
legend(arrayfun(@num2str,p,'uni',false));
%fix x axis labels
set(gca,'XTick',.5:numel(support))
set(gca,'XTickLabel',support)

enter image description here

答案 1 :(得分:0)

[h,b] = hist( my_data, Nbins );
plot( b, h / sum(h) );