发布网友 发布时间:2022-04-23 16:48
共2个回答
热心网友 时间:2023-07-30 12:24
你如果把
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,'*')
热心网友 时间:2023-07-30 12:25
clc
a=[1.39232e+006
1.28363e+006
219227
15762
343458
1.32344e+006
1.319e+006
1.04051e+006
5586
109807
136834
62825.9
1.27774e+006
1.30597e+006
1.38533e+006
1.35941e+006
1.31939e+006
1.15413e+006
501145
670298
380027
1.30405e+006
1.38849e+006
1.31132e+006
1.25509e+006
1.358e+006
1.45825e+006
2.20326e+006]';
maxa=max(a)%最大值
mina=min(a)%最小值
size(a)%尺寸
b=linspace(mina,maxa,100);%分为99个区间
a=sort(a);%将a排列
s=1;k=1;
n=zeros(1,99);
for
i=1:100-1
for
s=1:length(a)
if
a(s)>=b(i)&a(s)<=b(i+1)
n(i)=n(i)+1;
s=s+1;
end
end
end
n
sum(n)
%检验是否总数不变;
b=b(1:100-1);
plot(b,n,'go');
xlabel('区间');
ylabel('分布数');
坐标你自己改一下就行了。