← 返回
开发者工具

Pywayne Dsp

Digital signal processing toolkit for filtering, peak detection, detrending, and curve similarity. Use when working with sensor data, signal preprocessing, f...
数字信号处理工具包,用于滤波、峰值检测、去趋势和曲线相似度计算。适用于传感器数据、信号预处理等场景。
wangyendt wangyendt 来源
开发者工具 clawhub v0.1.0 1 版本 99885.5 Key: 无需
★ 0
Stars
📥 872
下载
💾 13
安装
1
版本
#latest

概述

Pywayne Dsp

数字信号处理工具集,提供滤波器、峰值检测、去趋势、曲线相似度等信号处理功能。

Quick Start

from pywayne.dsp import butter_bandpass_filter, peak_det, SignalDetrend

# Butterworth 低通滤波
filtered = butter_bandpass_filter(signal, order=3, lo=0.5, hi=40, fs=250)

# 峰值检测
peaks, valleys = peak_det(signal, delta=0.5)

# 信号去趋势
detrender = SignalDetrend(method='linear')
detrended = detrender(raw_signal)

Filtering - 滤波器

butter_bandpass_filter

巴特沃斯带通滤波器。

from pywayne.dsp import butter_bandpass_filter

# 带通滤波
filtered = butter_bandpass_filter(
    signal=raw_signal,
    order=4,
    lo=1,
    hi=50,
    fs=250,
    btype='bandpass'
)

参数说明

参数类型说明
------------------
signalarray输入信号
orderint滤波器阶数
lofloat下限截止频率 (Hz)
hifloat上限截止频率 (Hz)
fsfloat采样频率,默认为 0(不归一化)
btypestr滤波器类型:'lowpass', 'highpass', 'bandpass', 'bandstop'
realtimebool是否实时处理,默认 False

ButterworthFilter

纯 numpy 实现的巴特沃斯滤波器类,支持完整的 IIR 滤波功能。

from pywayne.dsp import ButterworthFilter

# 方式 1:通过参数设计
bf = ButterworthFilter.from_params(order=4, fs=200, btype='bandpass', cutoff=(1, 50))
y, zf = bf.lfilter(signal)

# 方式 2:通过系数构造
bf2 = ButterworthFilter.from_ba(b, a)
y, zf = bf2.lfilter(signal)

# 零相位滤波(前向-后向)
y, zf = bf.filtfilt(signal)

# 去趋势
detrended = ButterworthFilter.detrend(signal, method='linear')

参数设计方法

ButterworthFilter.from_params(order, fs, btype, cutoff, cache_zi=True)
ButterworthFilter.from_ba(b, a, cache_zi=True)

参数说明

参数类型说明
------------------
orderint滤波器阶数
fsfloat采样频率 (Hz)
btypestr'lowpass', 'highpass', 'bandpass', 'bandstop'
cutofffloat/Tuple截止频率 (Hz),带通为 (low, high) 元组
cache_zibool是否预计算稳态初始条件

实例方法

方法说明
------------
zi(self)返回稳态初始条件数组
lfilter(self, x, zi=None)零相位滤波,返回 (y, zf)
filtfilt(self, x, padtype='odd')零相位滤波,可指定填充方式

Peak Detection - 峰值检测

peak_det

峰值检测函数,基于 MATLAB peakdet 转换。

from pywayne.dsp import peak_det

max_peaks, min_peaks = peak_det(signal, delta=0.5)

参数说明

参数类型说明
------------------
varray输入信号
deltafloat检测阈值,控制检测灵敏度
xarray可选的 x 轴数据,若未提供则使用下标

返回值(maxima_indices, minima_indices) - 峰值和谷值的索引位置

find_extremum_in_sliding_window

在滑动窗口中查找极值。

from pywayne.dsp import find_extremum_in_sliding_window

extrema = find_extremum_in_sliding_window(data, k=50)

参数说明

参数类型说明
------------------
datalist输入数据列表
kint滑动窗口大小

返回值[minima, maxima] - 含局部极值的列表

FindSlidingWindowExtremum

滑动窗口极值查找器类,用于实时数据流。

from pywayne.dsp import FindSlidingWindowExtremum

detector = FindSlidingWindowExtremum(win=100, find_max=True)

# 应用新值
for sample in stream:
    current_peak = detector.apply(sample)
    # 处理 current_peak

方法

方法说明
------------
__init__(win, find_max)初始化,指定窗口大小和查找类型(最大值或最小值)
apply(val)更新窗口数据,返回当前极值

Detrending - 信号去趋势

SignalDetrend

信号去趋势处理器,支持多种去趋势算法。

from pywayne.dsp import SignalDetrend

# 去除线性趋势
detrender = SignalDetrend(method='linear')
detrended = detrender(signal)

# 去除均值趋势
detrender = SignalDetrend(method='mean')
detrended = detrender(signal)

# LOESS 去趋势
detrender = SignalDetrend(method='loess', span=0.3)
detrended = detrender(signal)

方法

方法说明
------------
methodstr去趋势方法:'none', 'mean', 'linear', 'poly', 'loess', 'wavelet', 'emd', 'ceemdan', 'median'
__call__(x)应用去趋势算法处理输入信号

去趋势方法

方法说明
------------
none不处理,返回原信号
mean去除均值
linear去除线性趋势
poly去除多项式趋势
loess局部加权回归平滑
wavelet小波变换去趋势
emdEMD 去趋势
ceemdanCEEMDAN 去趋势
median中值滤波去趋势

Curve Similarity - 曲线相似度

CurveSimilarity

曲线相似度计算,支持动态时间规整(DTW)。

from pywayne.dsp import CurveSimilarity

cs = CurveSimilarity()
distance = cs.dtw(curve1, curve2, mode='global')

方法

方法说明
------------
dtw(x, y, mode='global', *params)计算两条曲线的 DTW 距离
modestr'global'(全局)或 'local'(局部)

Other Tools - 其他工具

OneEuroFilter

一欧罗滤波器,用于平滑信号并减少延迟。

from pywayne.dsp import OneEuroFilter

# 初始化
euro_filter = OneEuroFilter(te=0.02, mincutoff=1.0, beta=0.007, dcutoff=1.0)

# 应用滤波
smooth_value = euro_filter.apply(new_measurement, te=0.02)

参数说明

参数类型说明
------------------
tefloat采样时间(秒),自动推断默认值
mincutofffloat最小截止频率
betafloat调整速率参数
dcutofffloat导数截止频率

WelfordStd

使用 Welford 算法进行在线标准差计算。

from pywayne.dsp import WelfordStd

std_calculator = WelfordStd(win=50)

for sample in data_stream:
    current_std = std_calculator.apply(sample)
    # 使用 current_std 进行判断

方法

方法说明
------------
__init__(win)初始化,指定窗口大小
apply(val)更新标准差计算,返回当前窗口标准差

应用场景

场景使用函数
----------------
心电图信号分析butter_bandpass_filter, peak_det
传感器数据平滑OneEuroFilter, ButterworthFilter
数据预处理SignalDetrend
曲线相似度比较CurveSimilarity.dtw
质量监控WelfordStd

版本历史

共 1 个版本

  • v0.1.0 当前
    2026-03-29 07:08 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

data-analysis

Pywayne Statistics

wangyendt
综合性统计检验库,包含37种以上方法,涵盖正态性检验、位置检验、相关性检验、时间序列检验和模型诊断。
★ 0 📥 1,912
dev-programming

CodeConductor.ai

larsonreever
AI驱动平台,提供快速全栈开发、智能体、工作流自动化及低代码AI集成的可扩展产品创建。
★ 72 📥 181,419
dev-programming

Mcporter

steipete
使用 mcporter CLI 直接列出、配置、认证及调用 MCP 服务器/工具(支持 HTTP 或 stdio),涵盖临时服务器、配置编辑及 CLI/类型生成功能。
★ 194 📥 67,409