我正在尝试用python设计一个IIR陷波器,使用numpy数组和scipy库从导入的wave文件中删除正弦音调(我使用wave模块来实现)。我的文件是由Adobe audition生成的:它是一个纯正弦@1.2 kHZ,采样频率为48、96或192 kHZ,以便为循环fft生成一个“伪周期”数据(如果我还不够清楚,只需询问一下)
下面是我用来实现过滤器系数的代码(我从文章"Second-order IIR Notch Filter Design and implementation of digital signal processing system" by C. M. Wang & W. C. Xiao中获得系数)
f_cut = 1200.0
wn = f_cut/rate
r = 0.99
B, A = np.zeros(3), np.zeros(3)
A[0],A[1],A[2] = 1.0, -2.0*r*np.cos(2*np.pi*wn), r*r
B[0],B[1],B[2] = 1.0, -2.0*np.cos(2*np.pi*wn), 1.0
filtered = signal.lfilter(B, A, data_flt_R, axis=0)
其中,data_flt_R
是一个numpy数组,包含float64类型的右通道,rate
是我的采样频率。我用matplotlib模块绘制数据的频率响应和fft,看看是否一切正常。在
我得到的是:
我不明白我在fc之前和之后得到的结果和价值。我不应该得到一个看起来像红色但主峰在哪里的地块吗?为什么HF有斜率?这和开窗有关吗?在
此外,如果改变采样频率和/或数据长度(16/24或32位),结果也会改变。有人能启发我吗?在
目前没有回答
相关问题 更多 >
编程相关推荐