MATLAB中resample函数最简单的参数如下:
y = resample(x,p,q)
以p/q乘以原始采样速率对输入序列x重新采样。resample在x上应用抗锯齿FIR低通滤波器,补偿滤波器带来的延迟。
根据以下2篇文章
MATLAB库函数upfirdn(分数倍采样率变换)的C语言实现(采用了STL::vector)
MATLAB库函数firls(最小二乘线性相位FIR滤波器设计)的C语言实现
可以知道,resample的核心还是分数倍采样率变换,而分数倍采样率变换的核心是:插零=>低通滤波=>抽取
常量和结构体定义的头文件ConstParam.h在下面文章中
MATLAB库函数hilbert(希尔伯特变换)的C语言实现(FFT采用FFTW库)
bessel.h和upfirdn.h请参考之前的博客,下面将核心代码进行注释。
第一类修正贝塞尔函数的C语言实现