gpt4 book ai didi

python - Python 中的带通滤波器形状

转载 作者:行者123 更新时间:2023-12-01 03:57:17 25 4
gpt4 key购买 nike

我试图制作一个带通滤波器。当我正在研究它时,我注意到一些奇怪的事情。滤波器的频率响应正常(scipy.signal.freqz)。但是当我将其应用于正弦信号时,滤波器的形状发生了变化。

图 3 = 信号频谱

图 4 = 根据 freqz() 函数的滤波器频率响应

图 1 = 应用滤波器的信号的频谱

最后,为什么滤波器的形状(以及幅度)在应用于信号时会发生变化?

Spectrum of my signal

Response of filter according to freqz function

Filter applied signal spectrum

from scipy.signal import butter, lfilter, buttord, freqz
import numpy as np
import matplotlib.pyplot as plt
import math

t = np.arange(0, 8192, 1)
data = 1+np.sin(.15*np.pi*t + np.pi/2)

b, a = butter(6, [0.35, 0.55], btype='band')

y = lfilter(b, a, data)

y = np.fft.rfft(y)
y = np.abs(y)

x = np.fft.rfft(data)
x = np.abs(x)


w, h = freqz(b, a, worN=4096)

plt.figure(1)
plt.plot(np.arange(0,4097,1),y)

plt.figure(2)
plt.plot(np.arange(0,8192,1), data)

plt.figure(3)
plt.plot(np.arange(0,4097,1), x)

plt.figure(4)
plt.plot(np.arange(0,4096,1),np.abs(h))
plt.show()

最佳答案

当您应用滤波器时,您将信号 f(w) 的傅里叶变换(即频谱)与滤波器函数 g(w) 相乘。因此,时域中的输出为 IFFT(f(w) g(w)),而谱域中的输出为 g(w)f(w),即图 1。很明显,该乘积将不同于信号和滤波器。在您的情况下,滤波器和信号不会重叠太多,这会导致有点奇怪的结果。尝试添加第二个角频率为 0.5 pi 的正弦波,您将看到截然不同的结果。

关于python - Python 中的带通滤波器形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37231768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com