数字信号处理3个作业-----作业2用Welch方法做谱估计
程序员文章站
2022-06-08 18:40:17
...
1.题目
书本538页13.8 对本书所附带光盘中的数据文件test.mat(数据在https://github.com/jianjake/-test),用Welch方法做谱估计,每段32点,叠合16点,用三角窗。输出平均后的谱曲线并和图13.5.1(d)相比较,观察窗函数对谱估计的影响。
2.分析
对无限长的信号取其有限的时间片段进行分析,即从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,无线长的信号被截断以后,其频谱发生了畸变,原来集中在x(0)处的能量被分散到两个较宽的频带中去了。
窗函数会谱估计的频域分辨率及上述的”泄漏”。 泄漏与窗函数频谱的两侧旁瓣有关,如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。
三角(Bartlett)窗,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。
海明(Hamming)窗,是余弦窗的一种,又称改进的升余弦窗。海明窗与汉宁窗都是余弦窗,只是加权系数不同。海明窗加权的系数能使旁瓣达到更小。
3. 结果
三角窗和海明窗时域图形及归一化对数幅频曲线
三角窗与用海明窗谱估计比较图
4. 程序
clear;
% 调出数据;
load test x;
N=4096;
Fn=-0.5:1/N:0.5-1/N;
% 用 Welch 平均估计试验数据的功率谱;
xpsd=pwelch(x,bartlett(33),16,N,'whole'); %三角窗
ham=pwelch(x,hamming(33),16,N,'whole'); %海明窗
mmax=max(xpsd);
hmax=max(ham);
xpsd=xpsd/mmax;
ham=ham/hmax;
xpsd=10*log10(xpsd+0.000001);
ham=10*log10(ham+0.000001);
figure(2);
subplot(211);
plot(Fn,fftshift(xpsd));grid on;title('三角窗谱估计');axis([-0.5 0.5 -60 0]);
subplot(212);
plot(Fn,fftshift(ham));grid on;title('海明窗谱估计');axis([-0.5 0.5 -50 0]);
W = linspace(-pi,pi,4096);
figure(1)
wn1 = bartlett(33);
[h1,w1] = freqz(wn1,1,W);
n=-16:1:16;
subplot(221)
stem(n,wn1,'.'); grid on;title('三角窗w(n)');
subplot(222)
plot(w1/pi,20*log10(abs(h1/max(h1)))); axis([-0.5 0.5 -100 0]);grid on;title('三角窗|W(e^{jw})|');
wn2=hamming(33);
[h2,w2]=freqz(wn2,1,W);
subplot(223)
stem(n,wn2,'.'); grid on;title('海明窗w(n)');
subplot(224)
plot(w2/pi,20*log10(abs(h2/max(h1)))); axis([-0.5 0.5 -100 0]);grid on;title('海明窗|W(e^{jw})|');