实例程序,应对普通情况应该够了,但是有些特殊情况不合适,不过大多数情况不必要求非常准确,如果要很准确,自行修改下。
% 数据
ydata = random('Normal',0,1,1,1024);
% 准备一些变量
bins = 100; %分100个区间进行统计
maxdat = max(ydata);%最大值
mindat = min(ydata);%最小值
bin_space = (maxdat - mindat) / bins;%每个bin宽度
xtick = mindat : bin_space : maxdat - bin_space;
% 求pdf
distribution = hist(ydata,bins);%使用
直方图得到数据落在各区间的总数
pdf = bins * distribution / ((sum(distribution )) * (maxdat - mindat));%计算pdf
% 画图
figure;
plot(xtick,pdf);
% 验证:sum(pdf) * bin_space应该接近1