乘同余法随机数M序列
例2.1 用乘同余法产生随机数 (见光盘 FLch2sjxleg1.m)
①编程如下:
A=6; N=100; %初始化;
x0=1; M=255;
for k=1:N %乘同余法递推100次;
x2=A*x0; %x2和x0分别表示x i 和x i-1;
x1=mod (x2,M); %将x2存储器的数除以M ,取余数放x1(x i )中;
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中,
且可直接显示在MA TLAB 的window 中;
k1=k;
%grapher %以下是绘图程序;
k=1:k1;
plot(k,v,k,v,'r');
xlabel('k'), ylabel('v');tktle('(0-1)均匀分布的随机序列')
② 程序运行结果如图2.5所示。
图2.5 采用MA TLAB 产生的(0,1)均匀分布的随机序列图
③ 产生的(0-1)均匀分布的随机序列
在程序运行结束后,产生的(0,1) 均匀分布的随机序列,直接从MATLAB 的window 界面中copy 出来如下(v2中每行存6个随机数):
v2 =
0.0234 0.1406 0.8438 0.0820 0.4922 0.9609
0.7852 0.7266 0.3750 0.2578 0.5508 0.3164
0.9023 0.4336 0.6094 0.6680 0.0234 0.1406
0.8438 0.0820 0.4922 0.9609 0.7852 0.7266
0.3750 0.2578 0.5508 0.3164 0.9023 0.4336
0.6094 0.6680 0.0234 0.1406 0.8438 0.0820
0.4922 0.9609 0.7852 0.7266 0.3750 0.2578
0.5508 0.3164 0.9023 0.4336 0.6094 0.6680
0.0234 0.1406 0.8438 0.0820 0.4922 0.9609
0.7852 0.7266 0.3750 0.2578 0.5508 0.3164
0.9023 0.4336 0.6094 0.6680 0.0234 0.1406
0.8438 0.0820 0.4922 0.9609 0.7852 0.7266
0.3750 0.2578 0.5508 0.3164 0.9023 0.4336
0.6094 0.6680 0.0234 0.1406 0.8438 0.0820
0.4922 0.9609 0.7852 0.7266 0.3750 0.2578
0.5508 0.3164 0.9023 0.4336 0.6094 0.6680
0.0234 0.1406 0.8438 0.0820
第二章的白噪声产生程序
例2.2 用乘同余法产生(见光盘 FLch2bzsheg2.m)
① 编程如下:
A=6; x0=1; M=255; f=2; N=100; %初始化;
x0=1; M=255;
for k=1: N %乘同余法递推100次;
x2=A*x0; %分别用x2和x0表示x i+1和x i-1;
x1=mod (x2,M); %取x2存储器的数除以M 的余数放x1(x i )中;
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中,
且可直接显示在MA TLAB 的window 中;
k1=k;
%grapher %以下是绘图程序;
k=1:k1;
plot(k,v,k,v,'r');
xlabel('k'), ylabel('v');tktle(' (-1,+1)均匀分布的白噪声')
② 程序运行结果如图2.6所示。
图2.6 采用MA TLAB 产生的(-1,+1)均匀分布的白噪声序列
③ 产生的(-1,1) 均匀分布的白噪声序列
在程序运行结束后,产生的(-1,1) 均匀分布的白噪声序列,直接从MA TLAB 的window 界面中copy 出来如下(v2中每行存6个随机数):
v2 =
-0.9531 -0.7188 0.6875 -0.8359 -0.0156 0.9219
0.5703 0.4531 -0.2500 -0.4844 0.1016 -0.3672
0.8047 -0.1328 0.2188 0.3359 -0.9531 -0.7188
0.6875 -0.8359 -0.0156 0.9219 0.5703 0.4531
-0.2500 -0.4844 0.1016 -0.3672 0.8047 -0.1328
0.2188 0.3359 -0.9531 -0.7188 0.6875 -0.8359
-0.0156 0.9219 0.5703 0.4531 -0.2500 -0.4844
0.1016 -0.3672 0.8047 -0.1328 0.2188 0.3359
-0.9531 -0.7188 0.6875 -0.8359 -0.0156 0.9219
0.5703 0.4531 -0.2500 -0.4844 0.1016 -0.3672
0.8047 -0.1328 0.2188 0.3359 -0.9531 -0.7188
0.6875 -0.8359 -0.0156 0.9219 0.5703 0.4531
-0.2500 -0.4844 0.1016 -0.3672 0.8047 -0.1328
0.2188 0.3359 -0.9531 -0.7188 0.6875 -0.8359
-0.0156 0.9219 0.5703 0.4531 -0.2500 -0.4844
0.1016 -0.3672 0.8047 -0.1328 0.2188 0.3359
-0.9531 -0.7188 0.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;
for k=1: N %乘同余法递推100次;
x2=A*x0; %分别用x2和x0表示x i+1和x i-1;
x1=mod (x2,M); %取x2存储器的数除以M 的余数放x1(x i )中;
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中,
且可直接显示在MA TLAB 的window 中;
k1=k;
%grapher %以下是绘图程序;
k=1:k1;
plot(k,v,k,v,'r');
xlabel('k'), ylabel('v');tktle(' (-1,+1)均匀分布的白噪声')
② 程序运行结果如图2.3所示。
图2.3 白噪声过程
第二章的M 序列产生程序
例2.3 用移位寄存器产生M 序列的MATLAB 软件实现(见光盘 FLch2bzsheg3.m)
① 编程如下:
X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi 初T 态(0101), Yi 为移位寄存器各级输出 m=60; %置M 序列总长度
for i=1:m %1#
Y4=X4; Y3=X3; Y2=X2; Y1=X1;
X4=Y3; X3=Y2; X2=Y1;
X1=xor(Y3,Y4); %异或运算
if Y4==0
U(i)=-1;
else
U(i)=Y4;
end
end
M=U
%绘图
i1=i
k=1:1:i1;
plot(k,U,k,U,'rx')
xlabel('k')
ylabel('M序列')
title('移位寄存器产生的M 序列')
② 程序运行结果如图2.8 所示。
图2.8 软件实现的移位寄存器产生的M 序列图
.
③ ' 四级移位寄存器产生的M 序列
M =
Columns 1 through 10
-1 1 -1 1 1 1 1 -1 -1 -1
Columns 11 through 20
1 -1 -1 1 1 -1 1 -1 1 1
Columns 21 through 30
1 1 -1 -1 -1 1 -1 -1 1 1
Columns 31 through 40
-1 1 -1 1 1 1 1 -1 -1 -1
Columns 41 through 50
1 -1 -1 1
Columns 51 through 60
1 1 -1 -1
i1 =
60
1 -1 -1 1 1 -1 -1 -1 1 1 1 1