.. . .. . .
实验2 白噪声通过LTI 的仿真
1、实验目的
了解白噪声通过LTI 系统的原理与处理方法,学会运用Matlab 函数对随机过程进行均值、相关函数和功率谱的估计,并且通过实验分析理论分析与实验结果之间的差异。
2、实验原理
假定一具有单位方差的抽样序列{X(n)}的白噪声随机过程X(t)通过一脉冲响应为
的线性滤波器,绘出输入输出信号的均值、方差、相关函数及功率谱密度。 设系统冲激响应为h(n),传递函数
?H?w??n?e?jnw n?h????,
或者用Z 变换,结果为
?H?w??h?n?e?n n????。
输入为 X (n),输出为
?Y?n??h?n?*X?n??k? k?h?n?k?X????,
均值关系:
mY?n??h?n?*mX?n?,
若平稳有, mY?n??mXH?0?
自相关函数关系, RY?n1,n2??h?n1?*h?n2?*RX?n1,n2?,
当是平稳时候,有
RY?m??h?m?*h??m?*RX?m?
题目中假设为白噪声,可以根据白噪声的性质进行理论计算。 白噪声的自相关函数,
rv?m???2v??t?
S. . . . . ..
.. . .. . .
这里,假设的是零均值和单位方差,于是rx?m????t?,而
Rx?z??1
Ry?z??H?z?H?z?1?
对应的功率谱, P y?w??Px?w?|H?ejw?|2?11?2acosw?a2
在这里,由于
Px?w??Rx?ejw??1,,a=0.95,可以算出输出信号的方差为,
?2jw y?ry?0??1?2????Ry?e?dw 可以用留数法简单计算出来。
下面对输入输出信号的均值、方差、相关函数及功率谱密度分别进行讨论。
均值变化
输入为白噪声,并且均值为 0,按照理论公式,可得到
mY?mXH?0??0
下面对实际值进行分析:
输入的随机序列,服从标准正态分布。可以用下面的语句产生
x = randn(1,500); % 产生题设的随机序列,长度为500 点
系统的冲激响应为
h?n???0.5?nu?n?,可以用下面的语句产生这个冲激信号:
b=[1];a=[1,-0.5]; % 设置滤波器的参数,b 为分子系数,a 为分母系数 h=impz(b,a,20); % 得到这个系统的冲激响应,就是题设中的h(n)
输入信号通过线性系统,可以通过卷积的方法,或者用 filter 函数,
y1=filter(b,a,x); % 用滤波器的方法,点数为500 点 y2=conv(x,h); % 通过卷积方法得到,点数为519 点
实现的MATLAB代码如下:
clear all;
x = randn(1,500); % 产生题设的随机序列,长度为500点
b=[1];a=[1,-0.5]; % 设置滤波器的参数,b为分子系数,a为分母系数 h=impz(b,a,20); % 得到这个系统的冲激响应,就是题设中的h(n) y1=filter(b,a,x); % 用滤波器的方法,点数为500点 subplot(2,1,1); plot(y1,'r');
Title('邹先雄——用滤波器的方法,点数为500 点'); x = randn(1,500);
y2=conv(x,h); % 通过卷积方法得到,点数为519点 subplot(2,1,2); plot(y2,'b');
title('邹先雄——通过卷积方法得到,点数为519 点'); grid on;
S. . . . . ..
.. . .. . .
下面画出两者得到波形的区别:(为了保持一致,对y2 的输出取前500 点)
两者的输出波形近似一致,可以采用任意一个进行分析。就采用 y1 进行讨论, 输出均值为:
y1_mean=mean(y1); % 进行时间平均,求均值
最终值为-0.0973,与理论的零值有一定误差,考虑到输入随机序列的均值不是0,
m_x=mean(x)=-0.0485,按照上面式子,得到m_y=m_xH(0)=2m_x=-0.0970理论值和实际值是非常吻合的。 附运行结果图:
S. . . . . ..
.. . .. . .
*因为是随机序列,所以每次运行得到
y1=2m_x
y1和m_x的值也是随机的,但是它们始终满足
S. . . . . ..
.. . .. . .
方差变化
输入信号方差的理论值就是 1,按照公式,输出的功率谱为
下面对实际值进行分析,用y1_var=var(y1); 求得输出均值为 1.3598,与理论值的1.3333 有差距。 如图:
自相关函数的理论与实际值
理论值为:
在题设中,为白噪声,所以 所以,输出的自相关函数理论值为
可以得到,在零点的值就是 1.3333,也就是输出信号的平均功率。
由MATLAb计算的结果为1.3608,这和计算结果非常接近,实际的自相关函数曲线为: clear all;
x = randn(1,500); % 产生题设的随机序列,长度为500点
b=[1];a=[1,-0.5]; % 设置滤波器的参数,b为分子系数,a为分母系数 h=impz(b,a,20); % 得到这个系统的冲激响应,就是题设中的h(n) y1=filter(b,a,x); % 用滤波器的方法,点数为500点 y2=conv(x,h); % 通过卷积方法得到,点数为519点 Y3=var(y1)
title('自相关函数');
Ry=xcorr(y1,20,'coeff'); % 进行归一化的自相关函数估计,相关长度为20 n=-20:1:20;
stem(n,Ry,'MarkerFaceColor','red');
title('邹先雄——实际的自相关函数曲线');
S. . . . . ..