程序:
wlp = 0.35*pi
whp = 0.65*pi
wc = [wlp/pi,whp/pi]
N = ceil(8/0.15)
n=0:N-1
window= hanning(N)
[h1,w]=freqz(window,1)
subplot(411)
stem(window)%画窗函数
axis([0 60 0 1.2])
grid
xlabel('n')
title('Hanning窗函数')
subplot(412)
plot(w/pi,20*log(abs(h1)/abs(h1(1)))) %画Hanning窗频谱图
axis([0 1 -350 0])
grid
xlabel('w/pi')
ylabel('幅度(dB)')
title('Hanning窗函数的频谱')
hn = fir1(N-1,wc, hanning (N))%基于窗函数的 FIR 滤波器
[h2,w]=freqz(hn,1,512) %freqz是用离散傅里叶变换的标准公示计算的 fft使用快速傅里
subplot(413)
stem(n,hn)
axis([0 60 -0.25 0.25])
grid
xlabel('n')
ylabel('h(n)')
title('Hanning窗函数的单位脉冲响应')
subplot(414)
plot(w/pi,20*log(abs(h2)/abs(h2(1))))
grid
xlabel('w/pi')
ylabel('幅度(dB)')
title('滤波器相对幅度响应')
结果:
N=35%滤波器阶数W1=0.3%通带下限
W2=0.6%通带上限
B=fir1(N,[W1,W2],'hamming')%hamming,海明窗
常见的窗口有
矩形窗 boxcar()
三角窗 triang()
汉宁窗 hanning()
海明窗 hamming()
布拉克曼窗 blackman()
恺撒窗kaiser(n,beta)
绘制频率响应曲线有可以用freqz()函数,比如:
n=50
figurefreqz(boxcar(n),1)
figurefreqz(hanning(n),1)
figurefreqz(hamming(n),1)
figurefreqz(blackman(n),1)
figurefreqz(kaiser(n,2.5),1)
或者直接用vwtool()工具,例如:
w = kaiser(200,2.5)
wvtool(w)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)