加载中…
个人资料
涛声依旧e
涛声依旧e
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,402
  • 关注人气:5
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab 数据的直方图、PDF和CDF

(2018-02-12 19:09:29)
分类: 程序调试
1.给定一组数据画直方图用hist/histc,不过这是旧命令了,新版本的用Histogram,具体使用方法参考matlab

2.给定一组数据画,画PDF和CDF也是用Histogram(x,'Normorlization','cdf/pdf'),效果比其他自己写的计算cdf和pdf的好,但是缺点是仍旧是柱状图,另外还有单独的命令cdfplot和pdfplot(cdfplot matlab有命令,pdfplot matlab有fileexchange,不过里面的代码跟下面思路一样)。注意用histogram和cdfplot算出的结果是一样的,只不过一个是直方图一个是线的表示方式。如果需要单独的点,则需要调用Histogram里的数据计算。
xvalues=randm(1,200);
H=histogram(xvalues,'Normalization','pdf');hold on;
h=H.Values;
b=H.BinEdges;
x=[];j=1;
for i=1:length(b)-1
    x(j)=(b(i)+b(i+1))/2;
    j=j+1;
end
figure(1);plot(x,h,'ro');


下面的是没有histogram之前用Hist或者histc计算的代码,思路一样
计算pdf
输入数据xvalues
c = linspace(floor(min(xvalues)), ceil(max(xvalues)), 20);分20等分
w = c(2)-c(1); % histogram bin-width
h = histc(xvalues,c); 
bar(c, h/(w*sum(h)), 'histc'); hold on; 画柱状图
plot(c,h./(w*sum(h)));hold on;画点图
这里注意有的code下面是sum(h)有的要乘以w,按道理是h/sum(h)这样积分才为1,但是形状是一样的,只是高度不一样。
还有一个命令是ksdensity()也可以用来估计Pdf,但是它用的是normal kernel function来估计

计算cdf
approx_cdf = cumsum(h)/(sum(h));
plot(c,approx_cdf,'rs');hold on;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有