用python进行信号分析(二) - 陷波器设计

[复制链接]
5551|5
 楼主| 会笑的星星 发表于 2021-7-21 13:46 | 显示全部楼层 |阅读模式
本帖最后由 会笑的星星 于 2021-7-21 13:53 编辑

顾名思义,馅波滤波器就是过滤掉信号中的指定频率而保留需要的频率。比如信号由50Hz的正弦波与100Hz的余弦波组成,其中,50Hz是噪音,我们真正需要的是100Hz信号,此时可以利用50Hz的陷波器过滤噪音从只保留100Hz。我们来看看python当中如何设计这个滤波器,先看滤波器的代码。
  1. import matplotlib.pyplot as plt
  2. from scipy import signal

  3. #函数原型参考[1]
  4. #w0中心频率
  5. #Q品质因数,Q=w0/BW,w0为中心频率,BW为-3dB带宽。当
  6. #BW越小,Q越大,陷波器过滤中心频率的同时对原始信号的影响越小
  7. #fs为数字信号的采样频率
  8. b,a = signal.iirnotch(w0=50,Q=30,fs=1000)

  9. #陷波器的幅频响应,fre是频率,h的模表示某个频率下的幅度值
  10. fre,h = signal.freqz(b,a,fs=fs)

  11. plt.plot(fre, 20*np.log10(abs(h)))
  12. plt.show()


陷波器的幅频响应,品质因数Q=30


当品质因素Q=5,其他参数不变时的幅频响应


对比Q=5与Q=30可以看到,Q越小,-3dB的带宽越宽,过滤原始信号频率的同时,还会对原始信号有更大的影响。

最后,我们利用Q=30的陷波器,看看他的滤波效果,见下面代码。
  1. # -*- coding: utf-8 -*-

  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. from scipy import signal

  5. fs = 1000.0
  6. t = np.arange(fs) / fs
  7. s_50hz = np.sin(2*np.pi*50*t)
  8. s_100hz = np.cos(2*np.pi*100*t)
  9. s = s_50hz + s_100hz

  10. b,a = signal.iirnotch(50,Q=30,fs=1000)
  11. #lfilter的函数原型参见[2]
  12. y = signal.lfilter(b,a,s)

  13. plt.subplot(3,1,1)
  14. plt.ylabel('50Hz+100Hz')
  15. plt.plot(t, s)

  16. plt.subplot(3,1,2)
  17. plt.ylabel('100Hz')
  18. plt.plot(t, s_100hz)

  19. plt.subplot(3,1,3)
  20. plt.ylim(-1.1,1.1)
  21. plt.ylabel('filtered waveform')
  22. plt.plot(t, y)

  23. plt.show()

运行代码后,出现下图:


在上图中的第三个图就是把50Hz过滤掉的剩余波形,对照100Hz的余弦信号,可以看到经过馅波滤波器过滤后的波形在0.6之前幅度有所变化,这是由于滤波器的初始条件所致。而在0.6以后的波形与100H的余弦波几乎是一样的,这说明这个馅波滤波器是起到过滤作用了。





[1]https://docs.scipy.org/doc/scipy/reference/reference/generated/scipy.signal.iirnotch.html#scipy.signal.iirnotch
[2]https://docs.scipy.org/doc/scipy/reference/reference/generated/scipy.signal.lfilter.html#scipy.signal.lfilter





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 会笑的星星 发表于 2021-7-21 13:54 | 显示全部楼层
 楼主| 会笑的星星 发表于 2021-7-21 13:54 | 显示全部楼层
有点冷清,再给自己回一条
ayl439 发表于 2021-7-21 17:29 | 显示全部楼层
luohao316 发表于 2021-7-22 13:13 | 显示全部楼层
如果有matlab,做这种工作还是用matlab更方便
红蛋大叔 发表于 2021-7-24 10:50 | 显示全部楼层
楼主,这些系列不错啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

96

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部