您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 用乘同余法产生随机数
系统辨识与MATLAB仿真附录1例2.1用乘同余法产生随机数(见光盘FLch2sjxleg1.m)①编程如下:A=6;N=100;%初始化;x0=1;M=255;fork=1:N%乘同余法递推100次;x2=A*x0;%x2和x0分别表示xi和xi-1;x1=mod(x2,M);%将x2存储器的数除以M,取余数放x1(xi)中;v1=x1/256;%将x1存储器的数除以256得到小于1的随机数放v1中;v(:,k)=v1;%将v1中的数(i)存放在矩阵存储器v的第k列中,v(:,k)%表示行不变、列随递推循环次数变化;x0=x1;%xi-1=xi;v0=v1;end%递推100次结束;v2=v%该语句末无‘;’,实现矩阵存储器v中随机数放在v2中,%且可直接显示在MATLAB的window中;k1=k;%grapher%以下是绘图程序;k=1:k1;plot(k,v,k,v,'r');xlabel('k'),ylabel('v');tktle('(0-1)均匀分布的随机序列')②程序运行结果如图2.5所示。图2.5采用MATLAB产生的(0,1)均匀分布的随机序列图系统辨识与MATLAB仿真附录2③产生的(0-1)均匀分布的随机序列在程序运行结束后,产生的(0,1)均匀分布的随机序列,直接从MATLAB的window界面中copy出来如下(v2中每行存6个随机数):v2=0.02340.14060.84380.08200.49220.96090.78520.72660.37500.25780.55080.31640.90230.43360.60940.66800.02340.14060.84380.08200.49220.96090.78520.72660.37500.25780.55080.31640.90230.43360.60940.66800.02340.14060.84380.08200.49220.96090.78520.72660.37500.25780.55080.31640.90230.43360.60940.66800.02340.14060.84380.08200.49220.96090.78520.72660.37500.25780.55080.31640.90230.43360.60940.66800.02340.14060.84380.08200.49220.96090.78520.72660.37500.25780.55080.31640.90230.43360.60940.66800.02340.14060.84380.08200.49220.96090.78520.72660.37500.25780.55080.31640.90230.43360.60940.66800.02340.14060.84380.0820第二章的白噪声产生程序例2.2用乘同余法产生(见光盘FLch2bzsheg2.m)①编程如下:A=6;x0=1;M=255;f=2;N=100;%初始化;x0=1;M=255;fork=1:N%乘同余法递推100次;x2=A*x0;%分别用x2和x0表示xi+1和xi-1;x1=mod(x2,M);%取x2存储器的数除以M的余数放x1(xi)中;v1=x1/256;%将x1存储器中的数除以256得到小于1的随机数放v1中;v(:,k)=(v1-0.5)*f;%将v1中的数(i)减去0.5再乘以存储器f中的系数,存放在矩阵存储器v的第k列中,v(:,k)表示行不变、列随递推循环次数变化;系统辨识与MATLAB仿真附录3x0=x1;%xi-1=xi;v0=v1;end%递推100次结束;v2=v%该语句后无‘;’,实现矩阵存储器v中随机数放在v2中,且可直接显示在MATLAB的window中;k1=k;%grapher%以下是绘图程序;k=1:k1;plot(k,v,k,v,'r');xlabel('k'),ylabel('v');tktle('(-1,+1)均匀分布的白噪声')②程序运行结果如图2.6所示。图2.6采用MATLAB产生的(-1,+1)均匀分布的白噪声序列③产生的(-1,1)均匀分布的白噪声序列在程序运行结束后,产生的(-1,1)均匀分布的白噪声序列,直接从MATLAB的window界面中copy出来如下(v2中每行存6个随机数):v2=-0.9531-0.71880.6875-0.8359-0.01560.92190.57030.4531-0.2500-0.48440.1016-0.36720.8047-0.13280.21880.3359-0.9531-0.71880.6875-0.8359-0.01560.92190.57030.4531-0.2500-0.48440.1016-0.36720.8047-0.13280.21880.3359-0.9531-0.71880.6875-0.8359-0.01560.92190.57030.4531-0.2500-0.48440.1016-0.36720.8047-0.13280.21880.3359系统辨识与MATLAB仿真附录4-0.9531-0.71880.6875-0.8359-0.01560.92190.57030.4531-0.2500-0.48440.1016-0.36720.8047-0.13280.21880.3359-0.9531-0.71880.6875-0.8359-0.01560.92190.57030.4531-0.2500-0.48440.1016-0.36720.8047-0.13280.21880.3359-0.9531-0.71880.6875-0.8359-0.01560.92190.57030.4531-0.2500-0.48440.1016-0.36720.8047-0.13280.21880.3359-0.9531-0.71880.6875-0.8359*另外,书中图2.3白噪声的产生如下:显然,只要在例2.2程序的初始化部分中给N=300,f=6,运行程序就可以得到如图2.3所示的(-3,3)的白噪声过程.①编程如下:A=6;x0=1;M=255;f=6;N=300;%初始化;x0=1;M=255;fork=1:N%乘同余法递推100次;x2=A*x0;%分别用x2和x0表示xi+1和xi-1;x1=mod(x2,M);%取x2存储器的数除以M的余数放x1(xi)中;v1=x1/256;%将x1存储器中的数除以256得到小于1的随机数放v1中;v(:,k)=(v1-0.5)*f;%将v1中的数(i)减去0.5再乘以存储器f中的系数,存放在矩阵存储器v的第k列中,v(:,k)表示行不变、列随递推循环次数变化;x0=x1;%xi-1=xi;v0=v1;end%递推100次结束;v2=v%该语句后无‘;’,实现矩阵存储器v中随机数放在v2中,且可直接显示在MATLAB的window中;k1=k;%grapher%以下是绘图程序;k=1:k1;plot(k,v,k,v,'r');xlabel('k'),ylabel('v');tktle('(-1,+1)均匀分布的白噪声')②程序运行结果如图2.3所示。系统辨识与MATLAB仿真附录5图2.3白噪声过程第二章的M序列产生程序例2.3用移位寄存器产生M序列的MATLAB软件实现(见光盘FLch2bzsheg3.m)①编程如下:X1=1;X2=0;X3=1;X4=0;%移位寄存器输入Xi初T态(0101),Yi为移位寄存器各级输出m=60;%置M序列总长度fori=1:m%1#Y4=X4;Y3=X3;Y2=X2;Y1=X1;X4=Y3;X3=Y2;X2=Y1;X1=xor(Y3,Y4);%异或运算ifY4==0U(i)=-1;elseU(i)=Y4;endendM=U%绘图i1=ik=1:1:i1;plot(k,U,k,U,'rx')xlabel('k')ylabel('M序列')系统辨识与MATLAB仿真附录6title('移位寄存器产生的M序列')②程序运行结果如图2.8所示。图2.8软件实现的移位寄存器产生的M序列图.③'四级移位寄存器产生的M序列M=Columns1through10-11-11111-1-1-1Columns11through201-1-111-11-111Columns21through30系统辨识与MATLAB仿真附录711-1-1-11-1-111Columns31through40-11-11111-1-1-1Columns41through501-1-111-11-111Columns51through6011-1-1-11-1-111i1=60
本文标题:用乘同余法产生随机数
链接地址:https://www.777doc.com/doc-5823714 .html