微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我用 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 举报,一经查实,本站将立刻删除。