首页 > 解决方案 > 我对 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)

标签: pythonfilterscipy

解决方案


推荐阅读