# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from scipy import signal
import numpy as np
fs1 = 1000 #采样率1000Hz
t = np.arange(fs1)/1000
y1 = np.sin(2*np.pi*50*t)
y2 = np.sin(2*np.pi*110*t)
s = y1 + y2
sos = signal.iirfilter(10,[20,100], rp = 1, rs=60, btype='bandpass',
analog=False, ftype='ellip',fs=1000,output='sos')
#使用滤波器sos过滤信号s,详见[3]
y = signal.sosfilt(sos, s)
plt.subplot(3, 1, 1)
plt.plot(t,s)
plt.ylabel('50Hz+110Hz')
plt.subplot(3, 1, 2)
plt.plot(t,y1)
plt.ylabel('50Hz')
plt.subplot(3, 1, 3)
plt.plot(t,y)
plt.ylabel('filtered waveform')
plt.show()
过滤结果对比如下如所示,可以看到,在第三个图中很好的过滤掉了混合信号s中110Hz的信号