{
  "schemaVersion": "1.0",
  "item": {
    "slug": "dsp-2",
    "name": "Pywayne Dsp",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/wangyendt/dsp-2",
    "canonicalUrl": "https://clawhub.ai/wangyendt/dsp-2",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/dsp-2",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dsp-2",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/dsp-2"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/dsp-2",
    "agentPageUrl": "https://openagent3.xyz/skills/dsp-2/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dsp-2/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dsp-2/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Pywayne Dsp",
        "body": "数字信号处理工具集，提供滤波器、峰值检测、去趋势、曲线相似度等信号处理功能。"
      },
      {
        "title": "Quick Start",
        "body": "from pywayne.dsp import butter_bandpass_filter, peak_det, SignalDetrend\n\n# Butterworth 低通滤波\nfiltered = butter_bandpass_filter(signal, order=3, lo=0.5, hi=40, fs=250)\n\n# 峰值检测\npeaks, valleys = peak_det(signal, delta=0.5)\n\n# 信号去趋势\ndetrender = SignalDetrend(method='linear')\ndetrended = detrender(raw_signal)"
      },
      {
        "title": "butter_bandpass_filter",
        "body": "巴特沃斯带通滤波器。\n\nfrom pywayne.dsp import butter_bandpass_filter\n\n# 带通滤波\nfiltered = butter_bandpass_filter(\n    signal=raw_signal,\n    order=4,\n    lo=1,\n    hi=50,\n    fs=250,\n    btype='bandpass'\n)\n\n参数说明：\n\n参数类型说明signalarray输入信号orderint滤波器阶数lofloat下限截止频率 (Hz)hifloat上限截止频率 (Hz)fsfloat采样频率，默认为 0（不归一化）btypestr滤波器类型：'lowpass', 'highpass', 'bandpass', 'bandstop'realtimebool是否实时处理，默认 False"
      },
      {
        "title": "ButterworthFilter",
        "body": "纯 numpy 实现的巴特沃斯滤波器类，支持完整的 IIR 滤波功能。\n\nfrom pywayne.dsp import ButterworthFilter\n\n# 方式 1：通过参数设计\nbf = ButterworthFilter.from_params(order=4, fs=200, btype='bandpass', cutoff=(1, 50))\ny, zf = bf.lfilter(signal)\n\n# 方式 2：通过系数构造\nbf2 = ButterworthFilter.from_ba(b, a)\ny, zf = bf2.lfilter(signal)\n\n# 零相位滤波（前向-后向）\ny, zf = bf.filtfilt(signal)\n\n# 去趋势\ndetrended = ButterworthFilter.detrend(signal, method='linear')\n\n参数设计方法：\n\nButterworthFilter.from_params(order, fs, btype, cutoff, cache_zi=True)\nButterworthFilter.from_ba(b, a, cache_zi=True)\n\n参数说明：\n\n参数类型说明orderint滤波器阶数fsfloat采样频率 (Hz)btypestr'lowpass', 'highpass', 'bandpass', 'bandstop'cutofffloat/Tuple截止频率 (Hz)，带通为 (low, high) 元组cache_zibool是否预计算稳态初始条件\n\n实例方法：\n\n方法说明zi(self)返回稳态初始条件数组lfilter(self, x, zi=None)零相位滤波，返回 (y, zf)filtfilt(self, x, padtype='odd')零相位滤波，可指定填充方式"
      },
      {
        "title": "peak_det",
        "body": "峰值检测函数，基于 MATLAB peakdet 转换。\n\nfrom pywayne.dsp import peak_det\n\nmax_peaks, min_peaks = peak_det(signal, delta=0.5)\n\n参数说明：\n\n参数类型说明varray输入信号deltafloat检测阈值，控制检测灵敏度xarray可选的 x 轴数据，若未提供则使用下标\n\n返回值：(maxima_indices, minima_indices) - 峰值和谷值的索引位置"
      },
      {
        "title": "find_extremum_in_sliding_window",
        "body": "在滑动窗口中查找极值。\n\nfrom pywayne.dsp import find_extremum_in_sliding_window\n\nextrema = find_extremum_in_sliding_window(data, k=50)\n\n参数说明：\n\n参数类型说明datalist输入数据列表kint滑动窗口大小\n\n返回值：[minima, maxima] - 含局部极值的列表"
      },
      {
        "title": "FindSlidingWindowExtremum",
        "body": "滑动窗口极值查找器类，用于实时数据流。\n\nfrom pywayne.dsp import FindSlidingWindowExtremum\n\ndetector = FindSlidingWindowExtremum(win=100, find_max=True)\n\n# 应用新值\nfor sample in stream:\n    current_peak = detector.apply(sample)\n    # 处理 current_peak\n\n方法：\n\n方法说明__init__(win, find_max)初始化，指定窗口大小和查找类型（最大值或最小值）apply(val)更新窗口数据，返回当前极值"
      },
      {
        "title": "SignalDetrend",
        "body": "信号去趋势处理器，支持多种去趋势算法。\n\nfrom pywayne.dsp import SignalDetrend\n\n# 去除线性趋势\ndetrender = SignalDetrend(method='linear')\ndetrended = detrender(signal)\n\n# 去除均值趋势\ndetrender = SignalDetrend(method='mean')\ndetrended = detrender(signal)\n\n# LOESS 去趋势\ndetrender = SignalDetrend(method='loess', span=0.3)\ndetrended = detrender(signal)\n\n方法：\n\n方法说明methodstr__call__(x)应用去趋势算法处理输入信号\n\n去趋势方法：\n\n方法说明none不处理，返回原信号mean去除均值linear去除线性趋势poly去除多项式趋势loess局部加权回归平滑wavelet小波变换去趋势emdEMD 去趋势ceemdanCEEMDAN 去趋势median中值滤波去趋势"
      },
      {
        "title": "CurveSimilarity",
        "body": "曲线相似度计算，支持动态时间规整（DTW）。\n\nfrom pywayne.dsp import CurveSimilarity\n\ncs = CurveSimilarity()\ndistance = cs.dtw(curve1, curve2, mode='global')\n\n方法：\n\n方法说明dtw(x, y, mode='global', *params)计算两条曲线的 DTW 距离modestr"
      },
      {
        "title": "OneEuroFilter",
        "body": "一欧罗滤波器，用于平滑信号并减少延迟。\n\nfrom pywayne.dsp import OneEuroFilter\n\n# 初始化\neuro_filter = OneEuroFilter(te=0.02, mincutoff=1.0, beta=0.007, dcutoff=1.0)\n\n# 应用滤波\nsmooth_value = euro_filter.apply(new_measurement, te=0.02)\n\n参数说明：\n\n参数类型说明tefloat采样时间（秒），自动推断默认值mincutofffloat最小截止频率betafloat调整速率参数dcutofffloat导数截止频率"
      },
      {
        "title": "WelfordStd",
        "body": "使用 Welford 算法进行在线标准差计算。\n\nfrom pywayne.dsp import WelfordStd\n\nstd_calculator = WelfordStd(win=50)\n\nfor sample in data_stream:\n    current_std = std_calculator.apply(sample)\n    # 使用 current_std 进行判断\n\n方法：\n\n方法说明__init__(win)初始化，指定窗口大小apply(val)更新标准差计算，返回当前窗口标准差"
      },
      {
        "title": "应用场景",
        "body": "场景使用函数心电图信号分析butter_bandpass_filter, peak_det传感器数据平滑OneEuroFilter, ButterworthFilter数据预处理SignalDetrend曲线相似度比较CurveSimilarity.dtw质量监控WelfordStd"
      }
    ],
    "body": "Pywayne Dsp\n\n数字信号处理工具集，提供滤波器、峰值检测、去趋势、曲线相似度等信号处理功能。\n\nQuick Start\nfrom pywayne.dsp import butter_bandpass_filter, peak_det, SignalDetrend\n\n# Butterworth 低通滤波\nfiltered = butter_bandpass_filter(signal, order=3, lo=0.5, hi=40, fs=250)\n\n# 峰值检测\npeaks, valleys = peak_det(signal, delta=0.5)\n\n# 信号去趋势\ndetrender = SignalDetrend(method='linear')\ndetrended = detrender(raw_signal)\n\nFiltering - 滤波器\nbutter_bandpass_filter\n\n巴特沃斯带通滤波器。\n\nfrom pywayne.dsp import butter_bandpass_filter\n\n# 带通滤波\nfiltered = butter_bandpass_filter(\n    signal=raw_signal,\n    order=4,\n    lo=1,\n    hi=50,\n    fs=250,\n    btype='bandpass'\n)\n\n\n参数说明：\n\n参数\t类型\t说明\nsignal\tarray\t输入信号\norder\tint\t滤波器阶数\nlo\tfloat\t下限截止频率 (Hz)\nhi\tfloat\t上限截止频率 (Hz)\nfs\tfloat\t采样频率，默认为 0（不归一化）\nbtype\tstr\t滤波器类型：'lowpass', 'highpass', 'bandpass', 'bandstop'\nrealtime\tbool\t是否实时处理，默认 False\nButterworthFilter\n\n纯 numpy 实现的巴特沃斯滤波器类，支持完整的 IIR 滤波功能。\n\nfrom pywayne.dsp import ButterworthFilter\n\n# 方式 1：通过参数设计\nbf = ButterworthFilter.from_params(order=4, fs=200, btype='bandpass', cutoff=(1, 50))\ny, zf = bf.lfilter(signal)\n\n# 方式 2：通过系数构造\nbf2 = ButterworthFilter.from_ba(b, a)\ny, zf = bf2.lfilter(signal)\n\n# 零相位滤波（前向-后向）\ny, zf = bf.filtfilt(signal)\n\n# 去趋势\ndetrended = ButterworthFilter.detrend(signal, method='linear')\n\n\n参数设计方法：\n\nButterworthFilter.from_params(order, fs, btype, cutoff, cache_zi=True)\nButterworthFilter.from_ba(b, a, cache_zi=True)\n\n\n参数说明：\n\n参数\t类型\t说明\norder\tint\t滤波器阶数\nfs\tfloat\t采样频率 (Hz)\nbtype\tstr\t'lowpass', 'highpass', 'bandpass', 'bandstop'\ncutoff\tfloat/Tuple\t截止频率 (Hz)，带通为 (low, high) 元组\ncache_zi\tbool\t是否预计算稳态初始条件\n\n实例方法：\n\n方法\t说明\nzi(self)\t返回稳态初始条件数组\nlfilter(self, x, zi=None)\t零相位滤波，返回 (y, zf)\nfiltfilt(self, x, padtype='odd')\t零相位滤波，可指定填充方式\nPeak Detection - 峰值检测\npeak_det\n\n峰值检测函数，基于 MATLAB peakdet 转换。\n\nfrom pywayne.dsp import peak_det\n\nmax_peaks, min_peaks = peak_det(signal, delta=0.5)\n\n\n参数说明：\n\n参数\t类型\t说明\nv\tarray\t输入信号\ndelta\tfloat\t检测阈值，控制检测灵敏度\nx\tarray\t可选的 x 轴数据，若未提供则使用下标\n\n返回值：(maxima_indices, minima_indices) - 峰值和谷值的索引位置\n\nfind_extremum_in_sliding_window\n\n在滑动窗口中查找极值。\n\nfrom pywayne.dsp import find_extremum_in_sliding_window\n\nextrema = find_extremum_in_sliding_window(data, k=50)\n\n\n参数说明：\n\n参数\t类型\t说明\ndata\tlist\t输入数据列表\nk\tint\t滑动窗口大小\n\n返回值：[minima, maxima] - 含局部极值的列表\n\nFindSlidingWindowExtremum\n\n滑动窗口极值查找器类，用于实时数据流。\n\nfrom pywayne.dsp import FindSlidingWindowExtremum\n\ndetector = FindSlidingWindowExtremum(win=100, find_max=True)\n\n# 应用新值\nfor sample in stream:\n    current_peak = detector.apply(sample)\n    # 处理 current_peak\n\n\n方法：\n\n方法\t说明\n__init__(win, find_max)\t初始化，指定窗口大小和查找类型（最大值或最小值）\napply(val)\t更新窗口数据，返回当前极值\nDetrending - 信号去趋势\nSignalDetrend\n\n信号去趋势处理器，支持多种去趋势算法。\n\nfrom pywayne.dsp import SignalDetrend\n\n# 去除线性趋势\ndetrender = SignalDetrend(method='linear')\ndetrended = detrender(signal)\n\n# 去除均值趋势\ndetrender = SignalDetrend(method='mean')\ndetrended = detrender(signal)\n\n# LOESS 去趋势\ndetrender = SignalDetrend(method='loess', span=0.3)\ndetrended = detrender(signal)\n\n\n方法：\n\n方法\t说明\nmethod\tstr\n__call__(x)\t应用去趋势算法处理输入信号\n\n去趋势方法：\n\n方法\t说明\nnone\t不处理，返回原信号\nmean\t去除均值\nlinear\t去除线性趋势\npoly\t去除多项式趋势\nloess\t局部加权回归平滑\nwavelet\t小波变换去趋势\nemd\tEMD 去趋势\nceemdan\tCEEMDAN 去趋势\nmedian\t中值滤波去趋势\nCurve Similarity - 曲线相似度\nCurveSimilarity\n\n曲线相似度计算，支持动态时间规整（DTW）。\n\nfrom pywayne.dsp import CurveSimilarity\n\ncs = CurveSimilarity()\ndistance = cs.dtw(curve1, curve2, mode='global')\n\n\n方法：\n\n方法\t说明\ndtw(x, y, mode='global', *params)\t计算两条曲线的 DTW 距离\nmode\tstr\nOther Tools - 其他工具\nOneEuroFilter\n\n一欧罗滤波器，用于平滑信号并减少延迟。\n\nfrom pywayne.dsp import OneEuroFilter\n\n# 初始化\neuro_filter = OneEuroFilter(te=0.02, mincutoff=1.0, beta=0.007, dcutoff=1.0)\n\n# 应用滤波\nsmooth_value = euro_filter.apply(new_measurement, te=0.02)\n\n\n参数说明：\n\n参数\t类型\t说明\nte\tfloat\t采样时间（秒），自动推断默认值\nmincutoff\tfloat\t最小截止频率\nbeta\tfloat\t调整速率参数\ndcutoff\tfloat\t导数截止频率\nWelfordStd\n\n使用 Welford 算法进行在线标准差计算。\n\nfrom pywayne.dsp import WelfordStd\n\nstd_calculator = WelfordStd(win=50)\n\nfor sample in data_stream:\n    current_std = std_calculator.apply(sample)\n    # 使用 current_std 进行判断\n\n\n方法：\n\n方法\t说明\n__init__(win)\t初始化，指定窗口大小\napply(val)\t更新标准差计算，返回当前窗口标准差\n应用场景\n场景\t使用函数\n心电图信号分析\tbutter_bandpass_filter, peak_det\n传感器数据平滑\tOneEuroFilter, ButterworthFilter\n数据预处理\tSignalDetrend\n曲线相似度比较\tCurveSimilarity.dtw\n质量监控\tWelfordStd"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wangyendt/dsp-2",
    "publisherUrl": "https://clawhub.ai/wangyendt/dsp-2",
    "owner": "wangyendt",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/dsp-2",
    "downloadUrl": "https://openagent3.xyz/downloads/dsp-2",
    "agentUrl": "https://openagent3.xyz/skills/dsp-2/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dsp-2/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dsp-2/agent.md"
  }
}