MATLAB库函数resample(重新采样序列)的C语言实现

resample的原理

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库)

resample的C语言实现

bessel.h和upfirdn.h请参考之前的博客,下面将核心代码进行注释。
第一类修正贝塞尔函数的C语言实现

 

猜你喜欢

转载自blog.csdn.net/wlwdecs_dn/article/details/108694980