跳转至

数字信号处理

TinyDSP — 为边缘设备信号处理而生

TinyDSP 基于 ESP-DSP 封装扩展,额外覆盖结构健康监测所需算法。

TinyMath → Math / Matrix / DotProduct
TinyDSP → 其余所有 DSP 模块 + DWT / ICA / Resample


架构速览

  • Signal 信号预处理


    tiny_conv · 卷积运算
    tiny_corr · 互相关/自相关
    tiny_resample · 采样率变换

    卷积 → 相关 → 重采样 →

  • Filter 数字滤波


    tiny_fir · FIR 滤波器 (窗函数设计)
    tiny_iir · IIR 滤波器 (双线性变换)

    FIR → IIR →

  • Transform 信号变换


    tiny_fft · FFT / IFFT 频谱分析
    tiny_dwt · 离散小波变换
    tiny_ica · 独立成分分析 (C++)

    FFT → DWT → ICA →

  • Support 调试支持


    tiny_view · ASCII 波形可视化
    tiny_view · 频谱 · 统计信息

    查看 →


场景索引

  • 找信号主频

    FFTtiny_fft_find_peak_frequency

  • 去噪 / 平滑

    FIR / DWT

  • 分离混合信号

    ICAICA::decompose (C++)

  • 延时估计 / 信号对齐

    互相关tiny_ccorr_f32

  • 模板匹配

    滑动相关tiny_corr_f32

  • 采样率转换

    重采样tiny_resample_f32

  • 时频分析 (非稳态)

    DWTtiny_dwt_multilevel_decompose_f32

  • 无显示器调试

    Supporttiny_view_signal_f32


快速开始

#include "tiny_dsp.h"

void app_main(void) {
    tiny_fft_init(1024);                        // 一次初始化

    float data[1024] = { /* 采集信号 */ };
    float spectrum[2048];                       // [Re0,Im0,Re1,Im1,...]

    tiny_fft_f32(data, 1024, spectrum,          // 加窗 FFT
                 TINY_FFT_WINDOW_HANNING);

    float freq, mag;
    tiny_fft_find_peak_frequency(               // 找主频
        spectrum, 1024, 100.0f, &freq, &mag);
}

ESP32 加速对照

函数 DSP 后端 加速比
tiny_conv_f32 dsps_conv_f32 2–4×
tiny_fft_f32 dsps_fft2r_fc32 3–5×
tiny_fir_filter_f32 dsps_fir_f32 2–3×
tiny_corr_f32 dsps_corr_f32 2–4×

非 ESP32 平台自动回退纯 C,API 不变。


模块依赖

tiny_math  ──►  signal/  ──►  filter/  ──►  transform/  ──►  support/
                 │                            │
                 └── FIR 使用卷积实现          └── ICA 依赖 Mat 类

代码结构

include/    tiny_dsp.h / tiny_dsp_config.h
signal/     conv · corr · resample
filter/     fir · iir
transform/  fft · dwt · ica (C++)
support/    view