通信原理实验报告
小组编号:57
小组名单/学号:
完成日期:2008-5-25
实验项目:
实验 1 随机数产生及直方图统计
实验 2 相关噪声模型和相关函数计算
实验 3 常量信号检测的计算机模拟
实验 4 伪随机序列产生及其特性研究
实验 7 语音信号的采样存储和回放
附录
实验 1 随机数产生及直方图统计
实验 1 随机数产生及直方图统计
一、实验目的
1.掌握在一般微型计算机上产主随机数的方法。
2.统计随机数的概率分布密度函数。
二、实验内容
1.用计算机产生[0,1]均匀分布的(伪)随机数。
2.由[0,1]均匀分布随机数产生其它分布的随机数,例:正态 N(0,l)分布的随机数。
3.用直方图统计随机数的分布密度。
三、实验设备
微型计算机及其它外围设备,工程计算工具软件 MATLAB7.1。
四、实验原理
1.计算机产生均匀分布随机数
若设 R 是[0,1]上均匀分布的随机变量, 则它们的密度函数为:
)(
r
1
0
1
0
r
其它
f K
(1-1)
在计算机算法中,为实现方便,通常使用伪随机数(序列)来代替(真)随机数。伪随
机序列是有周期性的数值序列,当其周期 N 相对很大时,统计特性一定程度上逼近随机序列,
故效果与(真)随机数相近。在本课程的以下部分,对伪随机数(序列)和真随机数(序列),
称谓上不再加以严格区分。
在计算机程序中,产生均匀分布伪随机数(序列)可以采用所谓“线性同余法”,有关资
料可以自行查阅。不过,高级编程语言都有现成的产生均匀分布随机数的功能函数,如 C 语
言中包含有随机函数 RANDOM(N),用产生一个 0~N-1 之间的符合统计要求的均匀分布的伪
随 机 数 ( 序 列 )。 每 调 用 一 次 该 函 数 , 得 到 均 匀 分 布 随 机 数 的 一 次 抽 样 , 如 语 句 A =
RANDOM(1000),则变量A就赋以一次抽样的随机数。在实验中,我们可以采用这种方法来
获得均匀分布的随机数列。
2.高斯分布随机数的获得
实际研究当中,高斯(正态)分布是经常被使用到的数学模型,可以近似描述很多随机
事件的统计特性。所以,如何产生高斯分布随机序列,是在本课程中必须掌握的内容。通常,
我们可以采用非线性变换法,对比较容易产生的均匀分布随机序列进行变换,(近似)得到高
斯分布随机序列。
公式(1-2)和(1-3)中,若 R1 和 R2 是[0,1]区间两个均匀分布随机变量,理论上可以
证明 XC 和 XS 是标准正态分布(均值为 0,方差为 1 的高斯分布)的随机变量。
X c
ln2(
R
1
)
2/1
cos
2
R
2
X S
ln2(
R
1
)
2/1
2sin
R
2
(1-2)
(1-3)
因为两变换式的正交性,XC 和 XS 是统计独立的。所以,在实际应用中,可以单独或同时
1
实验 1 随机数产生及直方图统计
使用式(1-2)和(1-3)。
当然,在一些较新的工具软件中,也已提供了直接的库函数,来生成高斯分布随机数。
比如在 MATLAB 中,randn 函数可以直接生成高斯分布随机数(矩阵)。
3.直方图
对于一个随机变量,假如我们知道它是正态的(或其它分布形式)我们可以从随机变量
的抽样估计它的均值和方差,从而得到它的分布密度函数。如果预先对一个随机变量分布一
无所知,要估计它的分布密度函数可借助于直方图统计方法:其方法介绍于下:
设有图 1-1 所示密度函数 fx(x)把随机变量 X 的取值量化,量化阶为 2ε,例如对于以 x=2
为中心的量化阶内,如果ε足够小。有
图 1-1 密度函数的取值量化
2
f x
)2(
2[
P
X
2
]
当 X 抽样 X1 ,X2, ……, XN ,是独立且同分布时,则
2[
P
X
2
]
XX
,
1
,...,
X
2
N
2(
中落在
2
N
)
2,
中的个数
当 N 较大能用频率代替概率。所以可以得到概率密度的估计值
f
x
)2(
X
k
在
2(
)
2,
中的个数
2
N
k=1,…,N
显然 x=2 并不特殊,可以重复进行其它 x 值上的密度估计。这样我们就得到密度函数 fx(x)
的离散估计值。这就是直方图方法。
这种直方图估计的准确度可以进行专门分析。分析它的方差可以知道,N 和ε的选择有
一定的要求。显然,数据样点数 N 越大越好,而区间密度ε选择与N值相适应为好。有表 1-1
可供参考。
表 1-1 样点数与直方单元数
N
K
500
22
1000
30
2000
39
5000
56
10000
74
N-数据样点数;K-随机变量取值范围量化的单元数。
实验中要求用计算机对所产生的随机数用直方图估计其概率密度函数,并打印出分布函
数的图形。
五、实验程序
%设置参数
N=1000;
2
实验 1 随机数产生及直方图统计
%生成[0,1]均匀分布随机序列
r1=unifrnd(0,1,[1,N])
r2=unifrnd(0,1,[1,N])
subplot(2,2,1),plot(1:N,r1)
axis([0,N,0,1])
title('[0,1]均匀分布随机序列r1')
subplot(2,2,2),plot(1:N,r2)
axis([0,N,0,1])
title('[0,1]均匀分布随机序列r2')
%两正交交换式,使均匀分布转换为标准正态分布
xc=(-2.*log(r1)).^0.5.*cos(2*pi.*r2)
xs=(-2.*log(r1)).^0.5.*sin(2*pi.*r2)
subplot(2,2,3),histfit(xc,50)
axis([-4,4,0,80])
title('变换后生成的标准正态分布xc')
subplot(2,2,4),histfit(xs,50)
axis([-4,4,0,80])
title('变换后生成的标准正态分布xs')
六、实验结果分析
程序运行结果见:附录.txt,各图象如图 1-2 所示。
[0,1]均匀分布随机序列r1
200
400
600
800
1000
变换后生成的标准正态分布xc
-2
0
2
4
1
0.8
0.6
0.4
0.2
0
0
80
60
40
20
0
-4
[0,1]均匀分布随机序列r2
200
400
600
800
1000
变换后生成的标准正态分布xs
-2
0
2
4
1
0.8
0.6
0.4
0.2
0
0
80
60
40
20
0
-4
1.用计算机产生[0,1]均匀分布的(伪)随机数。
图 1-2 仿真图象
3
实验 1 随机数产生及直方图统计
[0,1]均匀分布随机序列r1
100
200
300
400
500
600
700
800
900
1000
图 1-3 [0,1]均匀分布随机序列 r1
[0,1]均匀分布随机序列r2
100
200
300
400
500
600
700
800
900
1000
图 1-4
[0,1]均匀分布随机序列 r2
1
0.8
0.6
0.4
0.2
0
0
1
0.8
0.6
0.4
0.2
0
0
2.根据实验原理中(1-2)和(1-3),由[0,1]均匀分布随机数产生正态 N(0,l)分布的随
机数,并用直方图统计随机数的分布密度。
80
70
60
50
40
30
20
10
0
-4
变换后生成的标准正态分布xc
-3
-2
-1
0
1
2
3
4
图 1-5 变换后生成的标准正态分布 xc
4
实验 1 随机数产生及直方图统计
变换后生成的标准正态分布xs
-3
-2
-1
0
1
2
3
4
图 1-6 变换后生成的标准正态分布 xs
80
70
60
50
40
30
20
10
0
-4
根据最后的图象显示,程序近似完成了预期目标,由[0,1]区间两个均匀分布随机变量转
换成两个标准正态分布的随机变量。
七、问题讨论
1.如何得到[-1,1]内的均匀分布随机数。
程序如下:
%设置参数
N=1000;
%生成[0,1]均匀分布随机序列
q1=unifrnd(-1,1,[1,N])
[-1,1]均匀分布随机序列
1
0.5
0
-0.5
-1
0
100
200
300
400
500
600
700
800
900
1000
图 1-7
[-1,1]均匀分布随机序列
2.如何从 N(0,1)得到 N(10,10),即均值为 10、方差为 10 的正态分布随机数。
根据概率论的相关知识,一般的正态分布有时需要将随即变量“标准化”,即对任意随机
变量 X,若其数学期望 E(X),方差 D(X)均存在,且 D(X)>0,则
X
)
(
XEX
)
XD
(
为 X 的标准化随机变量。而 E(X*)=0,D(X*)=1 就是标准化随机变量的特征。
其实本题的要求就是以上原理的逆变化,这样就很容易能的出结果。即:
X
XXD
)
(
(
XE
)
5
(1-4)
(1-5)
出于对前面所生成的标准正态分布的比较,所用的均匀分布参数 r1,r2 依旧用实验内容中
实验 1 随机数产生及直方图统计
的程序。
程序如下:
%两正交交换式,使均匀分布转换为标准正态分布
xc=(-2.*log(r1)).^0.5.*cos(2*pi.*r2)
xs=(-2.*log(r1)).^0.5.*sin(2*pi.*r2)
subplot(2,2,1),histfit(xc,50)
axis([-4,4,0,80])
title('变换后生成的标准正态分布xc')
subplot(2,2,2),histfit(xs,50)
axis([-4,4,0,80])
title('变换后生成的标准正态分布xs')
%将标准正态分布转换为(10,10)正态分布
xcc=xc*10^0.5+10;
xss=xs*10^0.5+10;
subplot(2,2,3),histfit(xcc,50)
axis([0,20,0,70])
title('变换后生成的(10,10)正态分布xcc')
subplot(2,2,4),histfit(xss,50)
axis([0,20,0,70])
title('变换后生成的(10,10)正态分布xss')
变换后生成的标准正态分布xc
-2
0
2
4
80
60
40
20
0
-4
80
60
40
20
0
-4
变换后生成的标准正态分布xs
-2
0
2
4
变换后生成的(10,10)正态分布xcc
变换后生成的(10,10)正态分布xss
60
40
20
0
0
5
10
15
20
60
40
20
0
0
5
10
15
20
图 1-8 将标准正态分布转换为(10,10)正态分布
从图 1-8 结果来看,结果基本符合(10,10)正态分布的要求。
3.正态变换公式中
X c
ln2(
R
1
)
2/1
cos
2
R
2
6
实验 1 随机数产生及直方图统计
令
X
ln2(
2/1
1)
R
问 X 是什么分布的随机函数?在计算机上能用直方图对它的分布作估计吗?
程序如下:
x=(-2.*log(r1)).^0.5
hist(x,50)
axis([-4,4,0,60])
title('X的随机分布函数')
X的随机分布函数
50
40
30
20
10
0
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
图 1-9 X 的随机分布函数
根据图 1-9 的分布情况来看,基本可以推测出 X 是瑞利分布的随机函数。
4.令
W
2
cos R
2
,W 是什么分布的随机数?
程序如下:
w=cos(2*pi.*r2)
hist(w,50)
axis([-1.2,1.2,0,90])
title('W的随机分布函数')
W的随机分布函数
90
80
70
60
50
40
30
20
10
0
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
图 1-10 W 的随机分布函数
根据图 10 的显示结果,基本可以推测出 W 是高通分布的随机函数。
7