matlab累积分布函数图(cdf)

学习 时间:2026-04-07 18:09:51 阅读:7990
matlab累积分布函数图(cdf)y=rand(1,3000) ymin=min(y); ymax=max(y); x=linspace(ymin,ymax,20);yy=hist(y,x); %计算各个区间的个数 yy=yy/length(y); %计算各个区间的个数 bar(x,yy) %画出概率密度分布图 s=0 ;for i=2:length(x) s=[s,trapz(x([1:i]),yy([1:i]))]; end figure; plot(x,s,x,s,'*') 谁能告诉我这个程序是什么意思,为什么最后画出的cdf图,最后的值不是1呢很感谢你的回答,但是我仿真了一下,最后的值虽然与1相差不大,但是理论上应该严格等于1的吧,我用这种方法仿真了其它曲线,但是最后的值都只有0.9几

最佳回答

自然的小甜瓜

孝顺的大树

2026-04-07 18:09:51

你如果把y=rand(1,3000) 改为y=rand(1,30000) 同时x=linspace(ymin,ymax,20); 改为x=linspace(ymin,ymax,200); 试一下就会发现结果就会变为1原因是trapz函数是梯形积分公式,而本问题中,各个概率是矩形分布,将矩形变为梯形,肯定会引起误差的你看一下sum(yy)就会发现,其自身就是1,也就是说yy的值表示的并不是概率密度分布,而是某个区间的百分比yy/区间长度才是概率密度函数y=rand(1,3000); ymin=min(y); ymax=max(y); x=linspace(ymin,ymax,20); yy=hist(y,x); %计算各个区间的个数 yy=yy/length(y)/(x(2)-x(1)); %计算各个区间的个数 bar(x,yy) %画出概率密度分布图 s=0 ; for i=2:length(x) s=[s,trapz(x([1:i]),yy([1:i]))]; end figure; plot(x,s,x,s,'*')

最新回答共有2条回答

  • 淡然的斑马
    回复
    2026-04-07 18:09:51

    你如果把y=rand(1,3000) 改为y=rand(1,30000) 同时x=linspace(ymin,ymax,20); 改为x=linspace(ymin,ymax,200); 试一下就会发现结果就会变为1原因是trapz函数是梯形积分公式,而本问题中,各个概率是矩形分布,将矩形变为梯形,肯定会引起误差的你看一下sum(yy)就会发现,其自身就是1,也就是说yy的值表示的并不是概率密度分布,而是某个区间的百分比yy/区间长度才是概率密度函数y=rand(1,3000); ymin=min(y); ymax=max(y); x=linspace(ymin,ymax,20); yy=hist(y,x); %计算各个区间的个数 yy=yy/length(y)/(x(2)-x(1)); %计算各个区间的个数 bar(x,yy) %画出概率密度分布图 s=0 ; for i=2:length(x) s=[s,trapz(x([1:i]),yy([1:i]))]; end figure; plot(x,s,x,s,'*')

上一篇 英语重新排列句子,组成对话.

下一篇 :水蒸发变成水蒸气;从微观上分析,是什么发生了改变?