您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > MATLAB系统建模与仿真实验
系统建模与仿真实验报告报告一:产生10中独立分布的随机数,并检验其一、二阶距的性质。1、[0,1]区间的均匀分布采用乘同余法产生均匀分布在(0,1)之间的随机数。乘同余法的递推公式为:1(mod)nnxxM一般情况下,323a,a为整数,M于计算机的字长有关,2mM,m为16或32,x的初值为(1)21bx。利用MATLAB实现,代码如下:functionu=undistribution(a,b,m);%乘同余法lam=8*a-3;M=pow2(m);x(1)=pow2(b)+1;fori=2:10000;y=lam*x(i-1);x(i)=mod(y,M);endu=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)));00.10.20.30.40.50.60.70.80.910501001502002500-1均匀分布直方图均值为0.50227方差为0.0829332、标准正态分布高斯分布的概率密度函数:22()21()2xuPxe;首先利用前面产生均匀分布随机数的方法生成两组均匀分布的随机数u1,u2;利用公式:122lncos(2)Zuu,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)));-6-4-202468050100150200250300350400450标准正态分布直方图均值为0.0081833方差为1.00253、指数分布指数分布的概率密度函数如下:,0()0,xexPx其它;首先利用前面产生均匀分布随机数的方法生成一组均匀分布的随机数u;则数列1lnyu,为均值为,方差为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)));00.511.522.530200400600800100012001400指数分布直方图均值为0.12474方差为0.0171874、广义指数分布广义指数分布的概率密度函数如下:0()(2)exp(())pxIxsxs,设有两组高斯分布的数列x、y,另12xxs,其中s为信噪比,则221zxy服从广义指数分布。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);z=x1.^2+y.^2;hist(z,100)E=mean(z);D=var(z);title('广义指数分布直方图');text(0,-60,strcat('均值为',num2str(E)));text(63,-60,strcat('方差为',num2str(D)));010203040506070800100200300400500600700800广义指数分布直方图均值为6.0285方差为21.17185、瑞利分布瑞利分布的概率密度函数为:222exp(),0()20,0xxxfxx;瑞利分布数组可以利用高斯分布数列来产生,设有高斯分布的数列x、y,则22zxy服从瑞利分布。利用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);z=sqrt(x.^2+y.^2);hist(z,50)E=mean(z);D=var(z);title('瑞利分布直方图');text(0,-65,strcat('均值为',num2str(E)));text(5.5,-65,strcat('方差为',num2str(D)));012345670100200300400500600700800瑞利分布直方图均值为1.2496方差为0.434426、广义瑞利分布广义瑞利分布的概率密度函数如下:220222+()exp-(),02aap()I;同样,可以利用产生瑞利分布的方法来生产广义瑞利分布数列。设有高斯分布数列x、y,则22()zxay服从广义瑞利分布,其中a为常数。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);a=2;x1=x+a;z=sqrt(x1.^2+y.^2);hist(z,100)E=mean(z);D=var(z);title('广义瑞利分布直方图');text(0,-30,strcat('均值为',num2str(E)));text(7.4,-30,strcat('方差为',num2str(D)));0123456789050100150200250300350400广义瑞利分布直方图均值为2.2767方差为0.845067、韦布尔分布韦布尔分布的概率密度函数如下:1()()exp()aannxxxxapxbbb;其中0,0,0xab,则lnanizxbu服从韦布尔分布,其中iu是服从N(0,1)的正态分布。MATLAB实现代码如下:u1=undistribution(3,2,32);u2=undistribution(2,3,32);x=sqrt(-2*log(u1)).*cos(2*pi*u2);E=mean(x);D=var(x);y=(x-E)/sqrt(D);%将高斯数列x转为为服从N(0,1)的高斯分布数列yE1=mean(y);D1=var(y);xn=3;a=3;b=2;z=xn+b*(-log(y)).^(1/a);hist(z,100);E=mean(z);D=var(z);title('Τ²¼¶û·Ö²¼Ö±·½Í¼');text(3,-60,strcat('¾ùֵΪ',num2str(E)));text(6.6,-60,strcat('·½²îΪ',num2str(D)));33.544.555.566.577.50100200300400500600700800韦布尔分布直方图均值为5.0848-0.85012i方差为1.07958、对数正态分布对数正态分布概率密度函数如下:21ln(/)()exp()22xupxx。要生成具有对数正态分布的随机数列,只需对高斯分布的数列进行指数变换。MATLAB实现代码如下:u1=undistribution(3,2,32);u2=undistribution(3,2,16);x=sqrt(-2*log(u1)).*cos(2*pi*u2);z=exp(x);hist(z,2000);axis([0,15,0,3000])E=mean(z);D=var(z);title('对数正态分布直方图')text(0,-300,strcat('均值为',num2str(E)));text(12,-300,strcat('方差为',num2str(D)));051015050010001500200025003000对数正态分布直方图均值为1.772方差为59.4569、SwerlingⅡ型分布:设有两组高斯分布的数列x、y,则22()2rzxy就是SwerlingⅡ型分布随机数,其中r可以取全1数列。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);r=ones(1,10000);z=(r/2).*(x.^2+y.^2);hist(z,100)E=mean(z);D=var(z);title('SwerlingII分布直方图');text(0,-150,strcat('均值为',num2str(E)));text(20,-150,strcat('方差为',num2str(D)));05101520250200400600800100012001400160018002000SwerlingII分布直方图均值为0.99789方差为1.099910、χ2分布2分布的概率密度函数如下:1221()exp()22()2nnxpxxnp首先生成n组服从标准正态分布的随机数组ix,则2njiix服从2分布。MATLAB实现代码如下:u1=undistribution(3,2,32);u2=undistribution(2,3,32);u3=undistribution(5,4,32);u4=undistribution(4,5,32);g1=sqrt(-2*log(u1)).*cos(2*pi*u2);g2=sqrt(-2*log(u1)).*sin(2*pi*u2);g3=sqrt(-2*log(u3)).*cos(2*pi*u4);g4=sqrt(-2*log(u3)).*sin(2*pi*u4);x(1,1:10000)=g1;x(2,1:10000)=g2;x(3,1:10000)=g3;x(4,1:10000)=g4;fori=1:10000z(i)=x(1,i)^2+x(2,i)^2+x(3,i)^2+x(4,i)^2;endhist(z,100)E=mean(z);D=var(z);title('x^2分布直方图');text(0,-130,strcat('均值为',num2str(E)));text(65,-130,strcat('方差为',num2str(D)));01020304050607080050010001500x2分布直方图均值为3.9773方差为9.2147
本文标题:MATLAB系统建模与仿真实验
链接地址:https://www.777doc.com/doc-5222019 .html