随机过程的模拟与数字特征
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二随机过程的模拟与数字特征
一、实验目的
1. 学习利用MATLAB模拟产生随机过程的方法。
2. 熟悉和掌握特征估计的基本方法及其MATLAB 实现。
二、实验原理
1.正态分布白噪声序列的产生
MATLAB提供了许多产生各种分布白噪声序列的函数,其中产生正态分布白噪声序列的函数为randn。
函数:randn
用法:x = randn(m,n)
功能:产生m×n 的标准正态分布随机数矩阵。
如果要产生服从N (,) 分布的随机序列,则可以由标准正态随机序列产生。如果X ~ N(0,1),则N (,)。
2.相关函数估计
MATLAB提供了函数xcorr用于自相关函数的估计。
函数:xcorr
用法:c= xcorr (x,y)
c= xcorr (x)
c= xcorr (x,y ,'opition')
c= xcorr (x, ,'opition')
功能:xcorr(x,y) 计算X (n ) 与Y (n)的互相关,xcorr(x)计算X (n )的自相关。
option 选项可以设定为:
'biased' 有偏估计。
'unbiased' 无偏估计。
'coeff' m = 0 时的相关函数值归一化为1。
'none' 不做归一化处理。
3.功率谱估计
对于平稳随机序列X(n),如果它的相关函数满足
(2.1)
那么它的功率谱定义为自相关函数R X(m)的傅里叶变换:
(2.2)
功率谱表示随机信号频域的统计特性,有着重要的物理意义。我们实际所能得到的随机信号的长度总是有限的,用有限长度的信号所得的功率谱只是真实功率谱的估计,称为谱估计或谱分析。功率谱估计的方法有很多种,这里我们介绍基于傅里叶分析的两种通用谱估计方法。
(1)自相关法
先求自相关函数的估计X(m),然后对自相关函数做傅里叶变换
(2.3)
其中N 表示用于估计样本序列的样本个数。
(2)周期图法
先对样本序列x(n)做傅里叶变换
(2.4)
其中0n N-1,则功率谱估计为
(2.5)
MATLAB函数periodogram实现了周期图法的功率谱估计。
函数:periodogram
用法:[Pxx,w] = periodogram(x)
[Pxx,w] = periodogram(x,window)
[Pxx,w] = periodogram(x,window,nfft)
[Pxx,f] = periodogram(x,window,nfft,fs)
periodogram(...)
功能:实现周期图法的功率谱估计。其中:
Pxx为输出的功率谱估计值;
f为频率向量;
w为归一化的频率向量;
window代表窗函数,这种用法种对数据进行了加窗,对数据加窗是为了减少功率谱估计中因为数据截断产生的截断误差,表2.1列出了产生常用窗函数的MATLAB函数
nfft设定FFT算法的长度;
fs表示采样频率;
如果不指定输出参数(最后一种用法),则直接会出功率谱估计的波形。
三、实验内容
1. 按如下模型产生一组随机序列
x(n)=0.8x(n-1)(n)
其中(n)是均值为1,方差为4的正态分布白噪声序列。估计过程的自相关函数和功率谱。
(1)实验程序
m.文件如下:
#输入变量p表示x(n)里n的数值#
function f=func1(p)
。w=randn(1,p)*2+1;
#或f=normrnd(1,2,1000,1)#
x=zeros(1,p);
for n = 2:1:p
x(n)=0.8*x(n-1)+ w(n);
end
figure(1)
plot(x);
c=xcorr(x);
plot(c);
figure(2);
title(' 'x(n)的自相关函数');
figure(3);
periodogram(x);
title('x(n)的功率谱');
end
(2)实验过程及结果:
在command命令栏里输入:
func1(5000)
得到三个图的结果:
2. 设信号为
x(n)=(n) n=0,1,,N-1
其中f1 =0 .05,f2 =0 .12为正态分布白噪声序列,试在N =256和N= 1024点时,分别产生随机序列x(n),画出x(n)的波形并估计x(n)的相关函数和功率谱。
(1)实验程序:
写出m.文件
#输入变量p表示x(n)里n的数值#
function f=func2(p)
f1 = 0.05;
f2 = 0.12;
w=randn(1,p);
x = zeros(1,p);
for n=0:1:p-1
x(n+1) = sin(2*pi*f1*n) + 2*cos(2*pi*f2*n) + w(n+1);
end