1、- 1 -实验二 随机过程的模拟与数字特征实验目的1. 学习利用 MATLAB 模拟产生随机过程的方法。2. 熟悉和掌握特征估计的基本方法及其 MATLAB 实现。实验原理1.正态分布白噪声序列的产生MATLAB 提供了许多产生各种分布白噪声序列的函数,其中产生正态分布白噪声序列的函数为 randn。函数:randn用法:x = randn(m,n)功能:产生 mn 的标准正态分布随机数矩阵。如果要产生服从 分布的随机序列,则可以由标准正态随机序列产生。如果),(2N,则 。)1,0(XX2.相关函数估计MATLAB 提供了函数 xcorr 用于自相关函数的估计。函数:xcorr用法:c =
2、xcorr(x,y)c = xcorr(x)c = xcorr(x,y,opition)c = xcorr(x,opition)功能:xcorr(x,y)计算 与 的互相关,xcorr(x)计算 的自相关。)(nXY)(nXoption 选项可以设定为:biased 有偏估计。unbiased 无偏估计。coeff m = 0 时的相关函数值归一化为 1。none 不做归一化处理。3.功率谱估计对于平稳随机序列 ,如果它的相关函数满足)(nX- 2 -(2.1)mXR)(那么它的功率谱定义为自相关函数 的傅里叶变换:(2.2)mjmXXeS)()(功率谱表示随机信号频域的统计特性,有着重要的物
3、理意义。我们实际所能得到的随机信号的长度总是有限的,用有限长度的信号所得的功率谱只是真实功率谱的估计,称为谱估计或谱分析。功率谱估计的方法有很多种,这里我们介绍基于傅里叶分析的两种通用谱估计方法。(1)自相关法先求自相关函数的估计 ,然后对自相关函数做傅里叶变换)(mRX(2.3)1)(NjmXeRS其中 表示用于估计样本序列的样本个数。N(2)周期图法先对样本序列 做傅里叶变换)(nx(2.4)10)()(NnnjexX其中 ,则功率谱估计为10Nn(2.5)2)(1)(SMATLAB 函数 periodogram 实现了周期图法的功率谱估计。函数:periodogram用法:Pxx,w =
4、 periodogram(x)Pxx,w = periodogram(x,window)Pxx,w = periodogram(x,window,nfft)Pxx,f = periodogram(x,window,nfft,fs)periodogram(.)功能:实现周期图法的功率谱估计。其中:Pxx 为输出的功率谱估计值;f 为频率向量;- 3 -w 为归一化的频率向量;window 代表窗函数,这种用法种对数据进行了加窗,对数据加窗是为了减少功率谱估计中因为数据截断产生的截断误差,表 2.1 列出了产生常用窗函数的 MATLAB 函数表 2.1 常用窗函数及产生窗函数的 MATLAB 函数
5、窗函数 MATLAB 函数 窗函数 MATLAB 函数矩形窗 boxcar Blackman 窗 blackman三角窗 triang Chebyshev 窗 chebwinHanning 窗 hann Bartlett 窗 bartlettHamming 窗 hamming Kaiser 窗 kaisernfft 设定 FFT 算法的长度;fs 表示采样频率;如果不指定输出参数(最后一种用法) ,则直接会出功率谱估计的波形。实验内容1. 按如下模型产生一组随机序列 )(1(8.0)(nxn其中 是均值为 1,方差为 4 的正态分布白噪声序列。估计过程的自相关函数和功率谱。)(nMATLAB
6、代码:注解: w=randn(1001,1); 产生一个标准正态分布 x(1)=0; for i=2:1001;x(i)=0.8*x(i-1)+1+2*w(i); end; 产生题目要求的随机序列 plot(x); 画出随机序列 periodogram(x); 画出功率谱 c=xcorr(x); 求出自相关函数 n=-1000:1000; 确定自相关函数的图像范围 plot(n,c); 画出自相关函数图- 4 -实验结果:随机序列功率谱- 5 -相关函数实验原理:本题要求按它所给的公式产生一个伪随机序列,我们采用的方法依然是上次课所学的方法,只是在这里我们利用了 randm 函数,用它来产生高
7、斯白噪声,方程式为 )10,(21)(randm这样,我们就可以得到了题目要求均值和方差的高斯白噪声。然后通过一个循环就产生了题目要求的随机序列。接着,我们求出了这个随机序列的功率谱密度,方法是使用了 periodogram 函数,这个函数的作用就是产生随机序列的功率谱,其具体的使用方法已经在上面的描述中给出了。然后我们画出了它的自相关函数,用的是系统的 xcorr 函数,并将画出的自相关函数的自变量范围定在了-1000 到 1000 之间,从而得了实验结果中的图。- 6 -2. 设信号为 1,0 ),(2cos()2sin()1 Nnffx 其中 , ,为 正态分布白噪声序列,试在 和 点时
8、,05.1f.2f256024分别产生随机序列 ,画出 的波形并估计 的相关函数和功率谱。)()(x)(x(1)当 N=256 时MATLAB 代码注释: k=256; 选取点值为 256 w=randn(1,k); 产生标准高斯分布的高斯白噪声 x=randn(1,k); for i=1:(k-1); x(i)=sin(0.1*pi*i)+2*cos(0.24*pi*i)+w(i);end; 生成随机序列 plot(x); 画出随机序列图谱 periodogram(x); 画出功率谱密度 r=xcorr(x); 求出自相关函数 n=-k+1:k-1; 选定自相关函数的横坐标范围 plot(n
9、,r); 画出自相关函数图谱实验结果- 7 -随机序列相关函数- 8 -功率谱密度- 9 -(2)当 N=1024 时MATLAB 代码:注释: k=1024; 选取点值为 1024 w=randn(1,k); 产生标准高斯分布的高斯白噪声 x=randn(1,k); for i=1:(k-1);x(i)=sin(0.1*pi*i)+2*cos(0.24*pi*i)+w(i);end; 生成随机序列 plot(x); 画出随机序列图谱 periodogram(x); 求出功率谱 r=xcorr(x); 求出自相关函数 n=-k+1:k-1; 选定自相关函数的横坐标范围 plot(n,r); 画
10、出自相关函数图谱实验结果:随机序列自相关函数- 10 -功率谱密度实验原理:- 11 -本题的要求是在 和 处分别产生随机序列,并分别画出它们的功率谱256N1024密度和自相关函数,这里我们看到 是均值为 0,方差为 1 的高斯白噪声,所以我们用生)(n成高斯分布的函数 randm 直接产生高斯白噪声,然后产生所要求的随机序列,并将其画出。接下来我们求出了功率谱密度,用的也是这次试验刚学的 periodogram 函数,它的作用是实现周期图的功率谱估计,这样我们就估计出了它的功率谱密度。然后再次使用了 xcorr 函数,实现了对自相关函数的求解。这两次实验我们使用了类似于 C 语言中的全局变
11、量性质的变量 k,这样可以在不改变源程序的情况下,只需要改变 k,就可以求出任意 N 值处的随机序列,并对他们分析,这给我们带来了巨大的方便。结果分析:我们可以比较一下两次实验结果,在不同的 N 处,我们得到了两组不同的图,在两组图中,我们可以看出,在 N 较大时,我们的图比较密集,我们将它放大后可以看出,当 N 较大时,我们得到的结果精度较高,但是,图的整体形状基本不变的,只有一些细小的差别由于N 小的时候精度不够而没有体现出来,但是从总体上看,两图还是基本上是一致的,都表示出了这个随机序列的特性。- 12 -实验心得体会:本次实验的目的是进行特征估计,而实验中我们主要是研究了功率谱密度和自相关函数的估计,我们分别使用了系统中相关的求解函数并画出了他们的图,这样我们就观察到了我们所生成的随机序列,通过本次实验,我们可以清晰地观察到随机序列的功率谱和自相关函数的图形,从而对随机信号这部分内容有了更加深刻的了解与认识,对我随机信号的学习产生了巨大的帮助。