0%

Zero padding

本文详细介绍在信号处理过程中的zero padding的作用和意义。

相关概念

CTFT

连续时间傅里叶变换(Continuous time Fourier Transform),公式在此不做赘述,表示的是连续无限长的时间域函数通过傅里叶变换转换到连续无限长的频域函数。
CTFT的概念存在于物理世界中,在真正现实中处理信号时是无法得到连续信号的,必然是离散的

DTFT

离散时间傅里叶变换(Discrete time Fourier Transform),表示的是离散无限长的时间域函数通过傅里叶变换转换到连续无限长的频域函数。
同样的DTFT的概念存在于信号处理的理论中,在真实处理信号时是无法得到无限长的离散采样点,必然是有限长的离散采样点。

DFT

离散傅里叶变换(Discrete Fourier Transform),表示的是有限长的离散时间域函数通过傅里叶变换转换到离散有限长的频域函数。
这是我们在信号处理时采用的方法。需要注意的是,在运用DFT的时候还要注意香农定理,避免出现混叠

DFT存在的问题

在实际处理信号的过程中,我们发现:由于时域采样点的个数有限,频域上的频率反映会和实际的有一定差别,如下图所示

无限长的时域函数的傅里叶变换结果:

有限长的时域函数的傅里叶变换结果

我们发现不仅会出现side lope,还会出现△f。

解决方法

最简单的解决方法就是增加采样点的个数,然后在实际中由于硬件等一系列的原因,我们无法实现增加采样点,这时就可以用zero padding的方法来进行补救。

zero padding

zero padding本质上是通过在不影响结果的情况下,通过增加采样点的个数来实现对插值结果的预测,从而更好地表示变换后的细节。

时域上的 zero padding

时域上的zero padding主要是在采样点后增加一定长度的值为0的点。

增加后的结果中,我们可以很明显的看到,△f明显有了减小。

频域上的 zero padding

对于频域而言,zero padding之前我们要先了解频域的分布,对于一个频域函数而言,一半的位置是正负值的分水岭,而其表示直流分量的零点则表示在一头一尾处,所以我们在进行zero padding的过程中,就要先将频域函数对半切开,在中间增加为0的点。只有这样才会在不影响原有的频域的分布基础上,增加频域的范围。

我们知道,对于DFT和IDFT而言,频域点的个数和时域点的个数是相同的,所以我们在这样做之后,就相当于拓展了时域的点的个数,在原有两点中间加上了插值点,表现出了细节。

zero padding的意义

不改变数据

无论是频域和时域上的zero padding,都不会改变数据本身,仅仅只是改变了数据样本点的密度。

更好地体现细节

无论是频域和时域上的zero padding,都增加了数据样本点的密度,等价于在对应的另一个域上进行了插值。而这个插值我们原本是无从计算的,正是通过zero padding才实现了对插值的估计。

便于应用FFT算法

我们知道,快速傅里叶变换FFT算法需要 2 的 n 次方的样本点,而通过zero padding可以将样本点的个数凑成 2 的 n 次方,便于实现算法上的优化。