实验二 系统对随机信号响应的统计特性分析功率谱分析及应用实验Word文档格式.docx
《实验二 系统对随机信号响应的统计特性分析功率谱分析及应用实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验二 系统对随机信号响应的统计特性分析功率谱分析及应用实验Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
2.间接法估计随机信号功率谱
间接法的理论基础是Wiener-Khintchine定理,具体的实现方法是先由xN(n)估计出自相关函数
,然后对
求傅里叶变换得到xN(n)的功率谱,记之为XN(ejω),并以此作为对真实功率谱P(ejω)的估计。
工程上,常使用离散Fourier变换(DFT,编程上使用其快速算法FFT),即
,
,进行计算。
因为由这种方法求出的功率谱是通过自相关函数间接得到的,所以又称为间接法或Blackman-Tuckey(BT)法,该方法是FFT出现之前常用的谱估计方法。
3.时域中系统对随机信号响应的统计特性分析及仿真
根据系统卷积性质,计算系统输出信号的统计特性。
有如下性质:
4.频域中系统对随机信号响应的统计特性分析及仿真
根据卷积定理,输入、输出信号功率谱的关系为RY(ejω)=RX(ejω)|H(ejω)|2。
在计算系统输出信号功率谱时,如果在时域时计算困难,可以按照上式在频域计算。
(二)实验内容:
1.直接法估计随机信号功率谱
(1)生成1024点数据的随机信号
其中f1=30Hz,f2=100Hz,
为在[0,2п]内的均匀分布的随机变量,N(n)是数学期望为0,方差为1的高斯白噪声。
(2)用周期图法计算的功率谱,并绘图。
(3)用MATLAB函数periodogram重新计算的功率谱,并与
(2)做比较。
2.间接法估计随机信号功率谱
(1)计算以上的自相关函数。
(2)通过计算自相关函数的Fourier变换,求的功率谱并绘图。
(3)利用MATLAB函数psd、pwelch重新计算的功率谱,并与
(2)做比较。
3.系统对随机信号响应的统计特性分析及仿真
(1)生成含500点数据的高斯分布白噪声随机信号。
(2)设计一个带通系统,其上、下截止频率分别为4KHz和3KHz。
(3)计算通过以上带通滤波器的自相关函数和功率谱密度。
三、实验步骤
(1)生成1024点随机信号X(n),高斯白噪声N(n)。
(2)周期法绘制其功率谱。
(3)利用MATLAB函数periodogram计算功率谱,与
(2)比较。
(4)计算其自相关函数。
(5)计算自相关函数的傅里叶变换。
(6)求其功率谱。
(7)利用MATLAB函数psd、pwelch重新计算的功率谱,并与
(2)做比较。
(8)生成含500点数据的高斯分布白噪声随机信号。
(9)设计一个带通系统,其上、下截止频率分别为4KHz和3KHz。
(10)计算通过以上带通滤波器的自相关函数和功率谱密度。
大连理工大学实验报告
信息与通信工程学院专业:
电子信息工程班级:
1401
******学号:
******实验时间:
2016/11/04
实验室:
C221指导教师:
郭成安
实验II:
5.频域中系统对随机信号响应的统计特性分析及仿真
2.直接法估计随机信号功率谱
四、主要仪器设备
微型计算机、Matlab开发环境(本报告采用MATLAB2016a)
五、编程代码与操作方法
1.实验内容
(1):
直接法估计随机信号功率谱
(3)用MATLAB函数periodogram重新计算的功率谱,并与
(2)做比较。
代码如下:
clc;
clear;
%清屏及清除缓存
N=1024;
f1=30;
f2=100;
fs=1000;
t=(0:
N-1)/fs;
%第一问
Nn=randn(1,N);
%高斯白噪声
fai=random('
unif'
0,1,1,2)*2*pi;
%均匀随机变量
xn=2*cos(2*pi*f1*t+fai
(1))+5*cos(2*pi*f2*t+fai
(2))+Nn;
Xk=fft(xn);
Sk=(abs(Xk).^2)/N;
%随机信号分析书第二版上式2.6-28
%第二问
f=(0:
N/2-1)*fs/N;
w=10*log10(Sk(1:
N/2));
figure,plot(f,w);
title('
周期法估算随机信号功率谱'
);
xlabel('
f/Hz'
),ylabel('
Sx(f)(dB/Hz)'
%第三问
Sk=periodogram(xn);
periodogram函数算随机信号功率谱'
figure,subplot(2,1,1),plot(f,w);
直接法估算随机信号功率谱'
subplot(2,1,2),plot(f,w,'
r'
%延迟与原随机信号同一张图中比较
)
实验内容
(2):
间接法估计随机信号功率谱
(1)计算以上的自相关函数。
(2)通过计算自相关函数的Fourier变换,求的功率谱并绘图。
%清屏及清除缓存
%序列长度和采样频率
%时间序列
%高斯白噪声
Rxx=xcorr(xn);
Sk=abs(fft(Rxx));
N-1)*fs/N/2;
N));
m=-1023:
1023;
figure,plot(m,Rxx);
%画自相关函数
自相关函数'
tao'
R(tao)'
%画功率谱
自相关函数的功率谱'
Nseg=256;
%分隔字段为256
window=hanning(Nseg);
%汉宁窗
noverlap=Nseg/2;
f1=(0:
Nseg/2)*fs/Nseg;
%频率坐标轴
Sx=psd(xn,Nseg,fs,window,noverlap,'
none'
figure,plot(f1,10*log10(Sx));
gridon;
%psd函数估计功率谱
psd函数估计功率谱'
Sx1=pwelch(xn,window,128,Nseg,fs,'
onesided'
)*fs/2;
%pwelch函数估计功率谱
figure,plot(f1,10*log10(Sx1));
pwelch函数估计功率谱'
%三幅图的对比
figure,subplot(3,1,1),plot(f,w/2);
subplot(3,1,2),plot(f1,10*log10(Sx));
subplot(3,1,3),plot(f1,10*log10(Sx1));
实验内容(3):
系统对随机信号响应的统计特性分析及仿真
(1)生成含500点数据的高斯分布白噪声随机信号。
(2)设计一个带通系统,其上、下截止频率分别为4KHz和3KHz。
(3)计算通过以上带通滤波器的自相关函数和功率谱密度。
clear
clc%清屏及清除缓存
M=100;
%样本数
N=500;
%样本长度N=500,对应时长25ms
xt=random('
norm'
0,1,M,N);
%产生M×
N个高斯随机数,相当于M个样本
ht=fir1(101,[0.30.4]);
%ht为带通滤波器的冲激响应
HW=fft(ht,2*N);
%滤波器频率响应
Sxx=abs(fft(xt,2*N,2).^2)/(2*N);
%周期图法估计M个白噪声样本的功率谱
Sxxav=mean(Sxx);
%M个样本的平均,对Sxx的行求平均
HW2=abs(HW).^2;
%系统的功率传输函数
Syy=Sxxav.*HW2;
%输出信号的功率谱
Ryy=fftshift(ifft(Syy));
%用IFFT求输出信号的自相关函数
w=(1:
N)/N;
%功率谱密度横轴坐标
t=(-N:
N-1)/N*(N/20000);
%自相关函数横轴坐标
figure,plot(w,abs(Sxx(1:
N)));
输入信号的功率谱密度'
Sxx(f)'
%输入信号的功率谱密度
figure,plot(w,abs(HW2(1:
%系统的功率传输函数
系统的功率传输函数'
H2(f)'
figure,plot(w,abs(Syy(1:
%输出信号的功率谱密度
输出信号的功率谱密度'
Sxy(f)'
figure,plot(t,Ryy);
%输出信号的自相关函数
输出函数的自相关函数'
Ryy(tao)'
五、实验数据记录和处理
实验内容
(1)结果:
图2-1.1:
周期图法功率谱估计
图2-1.2:
periodogram函数功率谱估计
图2-1.3:
周期图法与periodogram函数功率谱估计在图一张图上的对比
实验内容
(2)结果:
图2-2.1:
自相关函数
图2-2.2:
傅里叶变换功率谱估计
图2-2.3:
psd函数估计功率谱
图2-2.4:
pwelch函数估计功率谱
图2-2.5:
傅里叶变换,psd函数,pwelch函数功率谱估计的比较
实验内容(3)结果:
图2-3.1:
输入信号的功率谱密度
图2-3.2:
系统的功率传输函数
图2-3.3:
输出信号的功率谱密度
图2-3.4:
输出信号的自相关函数
六、实验结果与分析
实验内容
(1):
利用周期图法计算随机信号的功率谱和MATLAB函数periodogram计算随机信号的功率谱结果几乎一致,
利用傅里叶变换得到xN(n)的功率谱,MATLAB函数psd计算xN(n)的功率谱,MATLAB函数pwelch计算xN(n)的功率谱,三者相比:
第一种傅里叶变换求得的功率谱,图像更为复杂,所包含的分量更多。
后两项的基本相似,曲线也相对平滑。
但总体三项的算法得到的图形相似。
单独输入一次信号与求100次来对比来说,多次求平均值图像更为平稳,这也与多次求平均有关。
七、讨论、建议、质疑
在第二题中直接采用xcorr函数计算自相关函数,本来想试着自己编写程序,但是遇到了很多困难,虽然知道原理是什么,但是写成算法有点难度,最后还是利用自带函数。
本次实验中取多次结果的平均值也值得我们借鉴到以后的编程中。
多编程,希望自己更进一步。