信号处理仿真:滤波器设计与仿真_(9).频率采样法.docxVIP

信号处理仿真:滤波器设计与仿真_(9).频率采样法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE1

PAGE1

频率采样法

频率采样法是一种在频率域设计数字滤波器的方法。通过在频率域选择一系列离散的频率点,并在这些点上指定滤波器的频率响应,可以设计出满足特定要求的滤波器。频率采样法的原理基于离散傅里叶变换(DFT),通过在频率域采样来实现滤波器的设计。这种方法特别适用于设计线性相位FIR滤波器。

原理

频率采样法的核心思想是通过在频率域选择一些关键的频率点,并在这些点上指定滤波器的频率响应,然后利用离散傅里叶逆变换(IDFT)将这些频率响应转换为时域的滤波器系数。具体步骤如下:

确定频率响应:在频率域选择N个离散频率点ωk=2πkN(k=0,

插值:通过插值方法(如线性插值、样条插值等)将这N个离散频率点扩展到整个频率范围。

离散傅里叶逆变换:利用IDFT将频率响应Hωk转换为时域的滤波器系数

窗函数:为了减少频率响应的波动和提高滤波器的性能,通常会对得到的滤波器系数hn

数学表达

假设我们希望设计一个长度为M的FIR滤波器,其频率响应为Hω。我们选择N个频率点ωk=2

h

为了减少频率响应的波动,可以对hn应用一个窗函数w

h

常用的窗函数有汉宁窗、海明窗、布莱克曼窗等。

设计步骤

1.确定频率响应

首先,我们需要确定滤波器的频率响应。假设我们希望设计一个低通滤波器,其截止频率为ωc。我们可以在N

在ωk≤ωc

在ωkωc

2.插值

插值步骤是为了将离散的频率响应扩展到整个频率范围。常见的插值方法有线性插值、样条插值等。这里我们使用线性插值作为示例。

3.离散傅里叶逆变换

利用IDFT将频率响应Hωk转换为时域的滤波器系数

4.应用窗函数

为了减少频率响应的波动,应用一个窗函数wn到滤波器系数hn

示例

假设我们需要设计一个长度为M=51的低通FIR滤波器,截止频率为ωc=0.2

Python代码示例

importnumpyasnp

importmatplotlib.pyplotasplt

fromscipy.signalimportfirwin,freqz

#设定参数

M=51#滤波器长度

N=128#频率点数

wc=0.2*np.pi#截止频率

#生成频率点

w=np.linspace(0,2*np.pi,N,endpoint=False)

#指定频率响应

H=np.zeros(N)

forkinrange(N):

ifw[k]=wc:

H[k]=1

else:

H[k]=0

#离散傅里叶逆变换

h=np.fft.ifft(H)

#应用汉宁窗函数

window=np.hanning(M)

h_w=h[:M]*window

#归一化滤波器系数

h_w=h_w/np.sum(h_w)

#计算频率响应

w,H_w=freqz(h_w,worN=1024)

#绘制频率响应

plt.figure(figsize=(10,6))

plt.plot(w,20*np.log10(np.abs(H_w)))

plt.title(频域采样法设计的低通FIR滤波器的频率响应)

plt.xlabel(频率(rad))

plt.ylabel(幅度(dB))

plt.grid(True)

plt.show()

代码解释

设定参数:定义滤波器长度M、频率点数N和截止频率ωc

生成频率点:使用np.linspace生成N个均匀分布的频率点。

指定频率响应:在频率点ωk≤ωc上设置Hωk=1

离散傅里叶逆变换:使用np.fft.ifft将频率响应转换为时域的滤波器系数。

应用窗函数:使用np.hanning生成汉宁窗函数,并将其应用到滤波器系数上。

归一化滤波器系数:将滤波器系数归一化,以确保其幅度响应在直流处为1。

计算频率响应:使用scipy.signal.freqz计算滤波器的频率响应。

绘制频率响应:使用matplotlib绘制滤波器的频率响应图。

结果分析

通过频率采样法设计的低通FIR滤波器在截止频率ωc附近会有一定的过渡带,这是由于频率响应的离散采样和窗函数的应用导致的。过渡带的宽度和波动可以通过增加频率点数N

其他窗函数

除了汉宁窗函数,还有其他常用的窗函数,如海明窗、布莱克曼窗等。这些窗函数在减少频率响应波动方面有不同的效果,可以根据具体需求选择合适的窗函数。

海明窗函数示例

#应用海明窗函数

window=np.hamming(M)

h_w=h[:M]*

文档评论(0)

找工业软件教程找老陈 + 关注
实名认证
服务提供商

寻找教程;翻译教程;题库提供;教程发布;计算机技术答疑;行业分析报告提供;

1亿VIP精品文档

相关文档