SP++ (Signal Processing in C++) 是一个关于信号处理与数值计算的开源C++程序库,该库提供了信号处理与数值计算中常用算法的C++实现。SP++中所有算法都以C++类模板方法实现,以头文件形式组织而成,所以不需要用户进行本地编译,只要将相关的头文件包含在项目中即可使用。”XXX.h”表示声明文件,”XXX-impl.h”表示对应的实现文件。所有的函数和类均位于名字空间”splab”中,因此使用SP++时要进行命名空间声明:”using namespace splab”。
SP++项目地址:https://code.google.com/archive/p/tspl/,所有算法以代码的形式发表在了“开源中国社区”,博客地址为:http://my.oschina.net/zmjerry/blog, https://www.oschina.net/p/tspl 若有找不到的文件,可以通过博客主页提供的“搜索博客”功能进行查找。
SP++中实现的相关算法目录如下:
1 向量类模板
1.1 基本向量类
1.2 常用数学函数的向量版本
1.3 常用的辅助函数
1.4 简单计时器
2 矩阵类模板
2.1 基本矩阵类
2.2 常用数学函数的矩阵版本
2.3 实矩阵与复矩阵的Cholesky分解
2.4 实矩阵与复矩阵的LU分解
2.5 实矩阵与复矩阵的QR分解
2.6 实矩阵与复矩阵的SVD分解
2.7 实矩阵与复矩阵的EVD分解
2.8 矩阵的逆与广义逆
3 线性方程组
3.1 常规线性方程组
3.2 超定与欠定线性方程组
3.3 病态线性方程组
4 非线性方程与方程组
4.1 非线性方程求根
4.2 非线性方程组求根
4.3 Romberg数值积分
5 插值与拟合
5.1 Newton插值
5.2 三次样条插值
5.3 最小二乘拟合
6 优化算法
6.1 一维线搜索
6.2 最速下降法
6.3 共轭梯度法
6.4 拟Newton法
7 Fourier分析
7.1 2的整次幂FFT算法
7.2 任意长度FFT算法
7.3 普通信号FFT使用方法
7.4 FFTW的C++接口
7.5 卷积与快速实现算法
8 数字滤波器设计
8.1 常用窗函数
8.2 滤波器基类设计
8.3 FIR数字滤波器设计
8.4 IIR数字滤波器设计
9 随机信号处理
9.1 随机数生成器
9.2 概论统计中的常用函数
9.3 相关与快速实现算法
10 功率谱估计
10.1 经典谱估计方法
10.2 参数化谱估计方法
10.3 特征分析谱估计方法
11 自适应滤波器
11.1 Wiener滤波器
11.2 Kalman滤波器
11.3 LMS自适应滤波器
11.4 RLS自适应滤波器
12 时频分析
12.1 加窗Fourier变换
12.2 离散Gabor变换
12.3 Wigner-Wille分布
13 小波变换
13.1 连续小波变换
13.2 二进小波变换
13.3 离散小波变换
14 查找与排序
14.1 二叉查找树
14.2 平衡二叉树
14.3 基本排序算法
14.4 Huffman编码