MATLAB中的窗函数程序

MATLAB中的窗函数程序,第1张

程序:

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8092708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存