信号抽取:

原始信号抽样频率fs减小到fs/D,最简单的方式是对原始信号每D个点抽取一个点,组成新序列,通过对两个序列的DTFT转换可知,原始信号的频谱做D倍扩展,再在横轴上每隔2pi/D的整数倍移位叠加。根据抽样定律,不发生混叠的前提是fs>= 2fc,对原始序列做D倍抽样,要保证重建原始信号,则fs>=2Dfc。否则,新的序列也会发生混叠。

因为M可变,很难保证始终满足条件。因此,可在抽取前,做低通滤波,压缩频带,再抽取。

信号插值:

fs增加I倍,最简单的方式是在原始序列两个相邻数据之间,插I-1个0,然后做低通滤波处理。相当于将原始信号的频谱做周期压缩,插值后,在原来一个周期内,变成了I个周期,多余的I-1周期称为原始信号的映像。通过低通滤波,去掉多余的映像,从时域上看,则是平滑作用。定标因子取I。

综上所述,对一个序列做抽样率I/D倍转换,可以先抽取,再插值,反之也可。但是,抽取会丢失信息,因此,先插值,再抽取,进行抽样率的转换、

采用同抽样率Ifs工作的级联滤波器,通过理论推到可知,输出为实际为将原始信号通过一个线性时变滤波器得到的。因此,算法转换为抽取和插值的时变滤波器设计。

对于FIR滤波器的单位抽样响应,如果直接实现,即先和滤波器系数相乘,再抽取,实际M个才需要一次。因此先抽取,再乘,然后利用多相滤波器,将原滤波器分层N/L个子滤波器。

实际用的时候,matlab中,这些函数都有。可以根据自己的需要,设定不同的参数,得到所要的输出。

也可以根据本文的理论,设计自己的转换算法。也可以根据数值分析中的插值方法来实现。