Butterworth滤波器在信号开始时产生极端异常值。
创始人
2025-01-10 02:31:52
0

在使用Butterworth滤波器时,需要注意到它会在信号开始部分(尤其是在低通滤波的情况下)产生极端异常值。这是由于Butterworth滤波器本质上是一种时域卷积滤波器,没有考虑到信号的初始条件。因此,需要在信号开始之前添加所需的初始值或进行其他处理。

代码示例:

加载数据

import numpy as np import matplotlib.pyplot as plt

生成原始信号

N = 100 x = np.linspace(0, 10, N) y = np.sin(x) + 0.2 * np.random.randn(N)

应用Butterworth滤波器

from scipy.signal import butter, filtfilt

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 = filtfilt(b, a, data) return y

定义截止频率和滤波器阶数

fs = 40.0 cutoff = 3.0

应用滤波器前,先添加所需的初始值(这里假设初始值为0)

y_f = np.insert(y, 0, np.zeros(10)) y_f = butter_lowpass_filter(y_f, cutoff, fs) y_f = y_f[10:]

绘图比较

plt.figure(figsize=(10, 6)) plt.plot(x, y, 'b-', label='raw signal') plt.plot(x, y_f, 'r-', label='filtered') plt.xlabel('time') plt.ylabel('amplitude') plt.title('

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...