工程1班 220150820 王子豪 1.直接周期图
Matlab程序如下:
clear;clc;
load test x;% 调出数据; N=2048;
Fn=-0.5:1/N:0.5-1/N; fx=fftshift(fft(x,N)); Pxx = fx.*conj(fx); Pxx = Pxx./N; Pxx = Pxx./max(Pxx); Pxx = 10*log10(Pxx); plot(Fn,Pxx);grid on;
直接求出的周期图如图1所示:
图1
1
2.Welch平均法
Matlab程序如下:
clear; % 调出数据; load test x; N=4096;
Fn=-0.5:1/N:0.5-1/N;
% 用 Welch 平均估计试验数据的功率谱;
xpsd=pwelch(x,hamming(33),16,N,'whole'); mmax=max(xpsd); xpsd=xpsd/mmax;
xpsd=10*log10(xpsd+0.000001); plot(Fn,fftshift(xpsd));grid on;
图2利用Welch法求出的周期图,共分四段,每段32点没有重合,使用了Hamming窗,这时谱变得平滑,但分辨率降低。
图2
图3也是用Welch法求出的周期图,每段32点,重合16点,使用了Hamming窗,谱变得更加平滑,分辨率与图2大体一致。
2
图3
3.自相关法(BT法)
Matlab程序如下:
clear; clc;
load test x; N=4096;
Fn=-0.5:1/N:0.5-1/N;
cx=xcorr(x,16);%计算序列的自相关函数 cxn=cx.*hamming(33)'; CXK=fft(cxn,N); xpsd=abs(CXK); mmax=max(xpsd); xpsd=xpsd/mmax;
xpsd=10*log10(xpsd+0.000001); plot(Fn,fftshift(xpsd));grid on;
图4是用BT法求得的功率谱,M=32,没有加窗。
3
图4
图5也是用BT法求得的功率谱,M=16,使用了Hamming窗。显然自相关函数的延迟M越小,谱变得越平滑。
图5
4
因篇幅问题不能全部显示,请点此查看更多更全内容