迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中实现低通滤波器

作者:迹忆客 最近更新:2023/12/17 浏览次数:

低通滤波器是信号处理基础中的一个术语,经常用于过滤信号以获得更准确的结果。

本教程将讨论低通滤波器以及如何在 Python 中创建和实现它。

低通滤波器用于使频率低于截止频率的信号通过,该频率保持用户指定的某个值。所有频率超过截止频率的信号都被削弱。


在 Python 中使用 Scipy 创建低通巴特沃斯滤波器

在 Python 中,我们可以利用 SciPy 库中的函数来创建低通滤波器。SciPy 是 Scientific Python 的缩写,是一个用于提供执行信号处理、优化和统计的函数的库。该库还使用下面的 NumPy 库。

现实世界中存在几个低通滤波器。但是,我们将在 Python 中创建一个 Butterworth 低通滤波器,因为它具有最大平坦的频率,这意味着通带中没有波纹。这使其成为最流行和最常用的低通滤波器之一。

要在 Python 中成功实现此方法,我们首先需要将 NumPySciPyMatplotlib 模块导入 Python 代码。

以下代码使用 SciPy 模块在 Python 中创建低通巴特沃斯滤波器。

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


def butter_lowpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype="low", analog=False)
    return b, a


def butter_lowpass_filter(data, cutoff, fs, order=5):
    b, a = butter_lowpass(cutoff, fs, order=order)
    y = lfilter(b, a, data)
    return y


# Setting standard filter requirements.
order = 6
fs = 30.0
cutoff = 3.667

b, a = butter_lowpass(cutoff, fs, order)

# Plotting the frequency response.
w, h = freqz(b, a, worN=8000)
plt.subplot(2, 1, 1)
plt.plot(0.5 * fs * w / np.pi, np.abs(h), "b")
plt.plot(cutoff, 0.5 * np.sqrt(2), "ko")
plt.axvline(cutoff, color="k")
plt.xlim(0, 0.5 * fs)
plt.title("Lowpass Filter Frequency Response")
plt.xlabel("Frequency [Hz]")
plt.grid()


# Creating the data for filteration
T = 5.0  # value taken in seconds
n = int(T * fs)  # indicates total samples
t = np.linspace(0, T, n, endpoint=False)

data = (
    np.sin(1.2 * 2 * np.pi * t)
    + 1.5 * np.cos(9 * 2 * np.pi * t)
    + 0.5 * np.sin(12.0 * 2 * np.pi * t)
)

# Filtering and plotting
y = butter_lowpass_filter(data, cutoff, fs, order)

plt.subplot(2, 1, 2)
plt.plot(t, data, "b-", label="data")
plt.plot(t, y, "g-", linewidth=2, label="filtered data")
plt.xlabel("Time [sec]")
plt.grid()
plt.legend()

plt.subplots_adjust(hspace=0.35)
plt.show()

Python 低通滤波器

上一篇:在 Python 中使用 requests 模块实现 Curl 命令

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中解析日志文件

发布时间:2023/12/20 浏览次数:180 分类:Python

了解如何在 Python 中解析日志文件。日志文件包含有关在软件系统或应用程序运行期间发生的事件的信息。这些事件包括错误、用户提出的请求、Bug 等。

在 Python 中声明一个没有值的变量

发布时间:2023/12/20 浏览次数:94 分类:Python

在本教程中,我们将讨论如何在 Python 中声明一个变量而不赋值。变量是保留的内存位置,可以存储一些值。换句话说,Python 程序中的变量将数据提供给计算机以处理操作。

在 Python 中定义类全局变量

发布时间:2023/12/20 浏览次数:77 分类:Python

本教程演示了如何定义类全局变量。全局变量是一个可见变量,可以在程序的每个部分使用。全局变量也不在任何函数或方法中定义。

在 Python 中的 Lambda 函数中传递多个参数

发布时间:2023/12/20 浏览次数:133 分类:Python

了解如何在 Python 中的 Lambda 函数中传递多个参数。lambda 形式或 lambda 表达式是 Python 中的匿名函数。它们是可以使用 Python 中保留的 lambda 关键字创建的内联函数。

在 Python 中导入 OpenSSL

发布时间:2023/12/20 浏览次数:147 分类:Python

本教程演示了如何在 Python 中使用 OpenSSL。我们旨在学习如何在 Python 中使用 OpenSSL。安装 OpenSSL Python 库

如何在 Python 中从路径获取文件名

发布时间:2023/12/20 浏览次数:74 分类:Python

本教程将演示 Python 中如何从路径中获取文件名,不论是什么操作环境下。使用 ntpath 库从路径中获取文件名 定义路径的方式可以是不同的。

在 Python 中获取绝对路径

发布时间:2023/12/20 浏览次数:94 分类:Python

它演示了如何在 Python 中获取一个文件的绝对路径。使用 abspath() 来获取 Python 中的绝对路径

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便