当前位置:   article > 正文

巴特沃斯滤波器python_如何用Scipy.signal.bu实现带通巴特沃斯滤波器

b, a = butter(order, [low, high], btype='band')

您可以跳过button的使用,而只需为过滤器选择一个顺序,看看它是否符合您的过滤条件。要生成带通滤波器的滤波器系数,请将滤波器阶数、截止频率Wn=[low, high](表示为奈奎斯特频率的分数,即采样频率的一半)和频带类型btype="band"。

下面是一个脚本,它定义了两个使用巴特沃斯带通滤波器的便利函数。当作为脚本运行时,它生成两个图。其中一个显示了相同采样率和截止频率下几个滤波器阶数的频率响应。另一个图展示了滤波器(阶数为6)对样本时间序列的影响。from scipy.signal import butter, lfilter

def butter_bandpass(lowcut, highcut, fs, order=5):

nyq = 0.5 * fs

low = lowcut / nyq

high = highcut / nyq

b, a = butter(order, [low, high], btype='band')

return b, a

def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):

b, a = butter_bandpass(lowcut, highcut, fs, order=order)

y = lfilter(b, a, data)

return y

if __name__ == "__main__":

import numpy as np

import matplotlib.pyplot as plt

from scipy.signal import freqz

# Sample rate and desired cutoff frequencies (in Hz).

fs = 5000.0

lowcut = 500.0

highcut = 1250.0

# Plot the frequency response for a few different orders.

plt.figure(1)

plt.clf()

for order in [3, 6, 9]:

b, a = butter_bandpass(lowcut, highcut, fs, order=order)

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

plt.plot((fs * 0.5 / np.pi) * w, abs(h), label="order = %d" % order)

plt.plot([0, 0.5 * fs], [np.sqrt(0.5), np.sqrt(0.5)],

'--', label='sqrt(0.5)')

plt.xlabel('Frequency (Hz)')

plt.ylabel('Gain')

plt.grid(True)

plt.legend(loc='best')

# Filter a noisy signal.

T = 0.05

nsamples = T * fs

t = np.linspace(0, T, nsamples, endpoint=False)

a = 0.02

f0 = 600.0

x = 0.1 * np.sin(2 * np.pi * 1.2 * np.sqrt(t))

x += 0.01 * np.cos(2 * np.pi * 312 * t + 0.1)

x += a * np.cos(2 * np.pi * f0 * t + .11)

x += 0.03 * np.cos(2 * np.pi * 2000 * t)

plt.figure(2)

plt.clf()

plt.plot(t, x, label='Noisy signal')

y = butter_bandpass_filter(x, lowcut, highcut, fs, order=6)

plt.plot(t, y, label='Filtered signal (%g Hz)' % f0)

plt.xlabel('time (seconds)')

plt.hlines([-a, a], 0, T, linestyles='--')

plt.grid(True)

plt.axis('tight')

plt.legend(loc='upper left')

plt.show()

以下是此脚本生成的绘图:

DZJox.png

VQNYG.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/78317?site
推荐阅读
相关标签
  

闽ICP备14008679号