我用 scipy.signal.lfilter() 做错了什么?

问题描述

我想测试我在纸上确定的简单 IIR 滤波器。我正在过滤无法在此处提供的音频信号。我知道输出应该是什么样的,但我没有得到我所期望的。我猜系数的格式有点错误,因为在使用 filter() 函数时,同样的方法在 MATLAB 中也有效。

import math
import cmath
import numpy as np
from scipy import signal
from scipy.io.wavfile import read
import matplotlib.pyplot as plt

pi = np.pi

fs = 44100
offset = 1

data = np.zeros((10000,2))
for n in range(0,10000):
    data[n,0] = offset + np.sin(2*pi*3000*n/fs)
    data[n,1] = offset + np.cos(2*pi*3000*n/fs)
    if np.mod(n,70) == 0:
        offset = -offset

alpha = 0.4
b = np.array([alpha])
a = np.array([1,-(1-alpha)])

data2 = signal.lfilter(b,a,data)
data3 = data - data2

fig,(ax1,ax2) = plt.subplots(2)
ax1.plot(data)
ax2.plot(data3)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)