当前位置:首页 > MATLAB系统建模与仿真实验
系统建模与仿真实验报告
报告一: 产生10中独立分布的随机数,并检验其一、二阶距的性质。
1、[0,1]区间的均匀分布
采用乘同余法产生均匀分布在(0,1)之间的随机数。乘同余法的递推公式为:
xn?1??xn(modM)
一般情况下,??23a?3,a为整数,M于计算机的字长有关,M?2m,m为16或32,x的初值为x(1)?2b?1。利用MATLAB实现,代码如下: function u=undistribution(a,b,m);%乘同余法 lam=8*a-3; M=pow2(m); x(1)=pow2(b)+1; for i=2:10000; y=lam*x(i-1); x(i)=mod(y,M); end u=x/M; end
调用函数,并检验产生随机数的数字特性。 y=undistribution(3,2,32); hist(y,50); E=mean(y); D=var(y);
title('0-1均匀分布直方图');
text(0,-20,strcat('均值为',num2str(E)));
text(0.77,-20,strcat('均值为',num2str(D)));
0-1均匀分布直方图25020015010050000.10.2均值为0.502270.30.40.50.60.70.80.91方差为0.082933
2、标准正态分布
高斯分布的概率密度函数:
P(x)?1e2??(x?u)22?2;
首先利用前面产生均匀分布随机数的方法生成两组均匀分布的随机数u1,u2;利用公式:Z??2lnu1cos(2?u2),Z服从高斯分布。MATLAB实现代码如下:
u1=undistribution(3,2,32); u2=undistribution(2,3,32);
z=sqrt(-2*log(u1)).*cos(2*pi*u2); hist(z,100); E=mean(z); D=var(z);
title('标准正态分布直方图')
text(-6,-40,strcat('均值为',num2str(E))); text(6,-40,strcat('方差为',num2str(D)));
标准正态分布直方图450400350300250200150100500-6-4-2均值为0.008183302468方差为1.0025
3、指数分布
指数分布的概率密度函数如下:
??e??x,x?0P(x)?? ;
0,其它?首先利用前面产生均匀分布随机数的方法生成一组均匀分布的随机数u;则数列y??1?lnu,为均值为?,方差为?2的指数分布随机数列。MATLAB实现
代码如下:
u=undistribution(3,2,32); lam=8;
y=-log(u)/lam; hist(y,150);
E=mean(y); D=var(y);
title('指数分布直方图')
text(0,-130,strcat('均值为',num2str(E))); text(2.3,-130,strcat('方差为',num2str(D)));
指数分布直方图140012001000800600400200000.511.522.53均值为0.12474方差为0.017187
4、广义指数分布
广义指数分布的概率密度函数如下:
p(x)?I0(2xs)exp(?(x?s)),
设有两组高斯分布的数列x、y,另x1?其中s为信噪比,则z?x12?y2x?s2,服从广义指数分布。MATLAB实现代码入下: u1=undistribution(3,2,32); u2=undistribution(2,3,32);
x=sqrt(-2*log(u1)).*cos(2*pi*u2); y=sqrt(-2*log(u1)).*sin(2*pi*u2); s=2;
x1=x+sqrt(2*s);
共分享92篇相关文档