数字信号处理¶
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 滤波器 (双线性变换) -
Transform 信号变换
tiny_fft· FFT / IFFT 频谱分析
tiny_dwt· 离散小波变换
tiny_ica· 独立成分分析 (C++) -
Support 调试支持
tiny_view· ASCII 波形可视化
tiny_view· 频谱 · 统计信息
场景索引¶
-
找信号主频
→ FFT —
tiny_fft_find_peak_frequency -
去噪 / 平滑
→ FIR / DWT
-
分离混合信号
→ ICA —
ICA::decompose(C++) -
延时估计 / 信号对齐
→ 互相关 —
tiny_ccorr_f32 -
模板匹配
→ 滑动相关 —
tiny_corr_f32 -
采样率转换
→ 重采样 —
tiny_resample_f32 -
时频分析 (非稳态)
→ DWT —
tiny_dwt_multilevel_decompose_f32 -
无显示器调试
→ Support —
tiny_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 不变。