信号的FFT变换与加窗

1. fft 傅里叶变换

1.1 傅里叶变换的本质

数学上有一种公式叫做 泰勒展开:
在这里插入图片描述

泰勒公式: 其表达的思想,是任意一函数可以有多个指数函数构成

当指数函数的个数趋近于无穷多个,那么组合出来的函数将会逼近原函数;

同样的, 傅里叶想说的,
在信号处理领域, 在时域中,任意一个信号可以由多个正弦信号构成。

在频域中,任意一个信号可以由多个频率分量构成。

1.2 傅里叶变换在时域中的作用

傅立叶变换有助于理解常见的信号,以及如何辨别信号中的错误。 尽管傅立叶变换是一个复杂的数学函数,但是通过一个测量信号来理解傅立叶变换的概念并不复杂。 从根本上说,傅立叶变换将一个信号分解为不同幅值和频率的正弦波。 我们继续来分析这句话的意义所在。
所有信号都是若干正弦波的和

我们通常把一个实际信号看作是根据时间变化的电压值。 这是从时域的角度来观察信号。 傅立叶定律指出,任意波形在时域中都可以由若干个正弦波和余弦波的加权和来表示。 例如,有两个正弦波,其中一个的频率是另一个的3倍。 将两个正弦波相加,就得到了一个不同的信号。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3.1 时域中,信号分解的应用

您创建了一个方波。 通过这种方法,所有时域中的信号都可表示为一组正弦波。
即使可以通过这种方法构造信号,那意味着什么呢? 因为可以通过正弦波构造信号,同理也可以将信号分解为正弦波。 一旦信号被分解,可查看和分析原信号中不同频率的信号。 请参考信号分解的下列使用实例:

  • 分解广播信号,可选择要收听的特定频率(电台)。
  • 将声频信号分解为不同频率的信号(例如,低音、高音),可增强特定频段,移除噪声。
  • 根据速度和强度分解地震波形,可优化楼宇设计,避免强烈震动。
  • 分解计算机数据时,可忽略频率重要性最低的数据,这样就能更紧凑地利用内存。这就是文件压缩的原理。

1.3 傅里叶变换在频域中的作用

傅立叶变换将一个时域信号转换为频域信号。 频域信号显示了不同频率对应的电压。 频域是另一种观察信号的角度。

数字化仪对波形进行采样,然后将采样转换为离散的值。 因为发生了转换,傅立叶转换在这些数据上无法进行。 可使用离散傅立叶变换(DFT),其结果是离散形式的频域信号。 FFT是DFT的一种优化实现,计算量较少,但是本质上是对信号的分解。

请查看上图1中的信号。 有两个频率不同的信号。在该情况下,频域中就会显示两条表示不同频率的竖线。

在这里插入图片描述
原信号的幅值在竖轴上表示。 图2中有个不同幅值的信号。频域中最高的竖线对应于最高电压的正弦信号。 在频域里观察信号,可直观地看出最高电压发生在哪个频率上。

在这里插入图片描述

在这里插入图片描述

现实生活中,情况是怎样的呢? 许多混合信号示波器(MSO)都有FFT功能。 下图中,你可以观察到混合信号图中,方波FFT是如何显示的。 放大后可观察到频域中的尖峰。

在这里插入图片描述
在频域中观察信号有助于验证和发现信号中的问题。 例如,假设有一个输出正弦波的电路。 可在示波器上查看时域输出信号,如图8所示。 看上去没有任何问题!

在这里插入图片描述
在频域中查看信号时,如果输出的正弦波频率稳定,应该只在频率中显示为一条竖线。 但是,可以看到在更高的频率上仍然有一条竖线,表示正弦波并不如观察到的那么完美。 可尝试优化电路,去除特定频率的噪声。 在频域中显示信号有助于发现信号中的干扰、噪声和抖动。

在这里插入图片描述

图中看似完美的正弦波,可以看出波形中有一个抖动

1.4 fft点数的选取

1.4.1 计算fft

求序列{2,3,3,2}的DFT变换。

N=4;
n=0:N-1;
xn=[2 3 3 2];
xk=fft(xn)
运算结果如下:
xk = 10.0000 + 0.0000i -1.0000 - 1.0000i 0.0000 + 0.0000i -1.0000 + 1.0000i

带入公式检验:
X [ k ] = ∑ n = 0 N − 1 X [ n ] W N n k X [ k ] X[k]=\sum_{n=0}^{N-1}X[n]W_N^{nk}X[k] X[k]=n=0N1X[n]WNnkX[k]

X [ 0 ] = 2 W 4 0 + 3 W 4 0 + 3 W 4 0 + 2 W 4 0 X[0]=2W_4^{0}+3W_4^{0}+3W_4^{0}+2W_4^{0} X[0]=2W40+3W40+3W40+2W40

X [ 1 ] = 2 W 4 0 + 3 W 4 1 + 3 W 4 2 + 2 W 4 3 X[1]=2W_4^{0}+3W_4^{1}+3W_4^{2}+2W_4^{3} X[1]=2W40+3W41+3W42+2W43

X [ 2 ] = 2 W 4 0 + 3 W 4 2 + 3 W 4 4 + 2 W 4 6 X[2]=2W_4^{0}+3W_4^{2}+3W_4^{4}+2W_4^{6} X[2]=2W40+3W42+3W44+2W46

X [ 3 ] = 2 W 4 0 + 3 W 4 3 + 3 W 4 6 + 2 W 4 9 X[3]=2W_4^{0}+3W_4^{3}+3W_4^{6}+2W_4^{9} X[3]=2W40+3W43+3W46+2W49

公式运算结果与matlab仿真结果一致。

​ xk与xn的维数相同,共有4个元素。xk的第一个数对应于直流分量,即频率值为0,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。

1.4.2 采样点数n与fft 之间的影响

对n个采样点 进行FFT,表示在时域上对原来的信号取了n个点来做频谱分析,n点FFT变换的结果仍为n个点.

信号一:

y = 0.5 s i n ( 2 p i 20 t ) + 2 s i n ( 2 p i 40 t ) y=0.5sin(2pi20t)+2sin(2pi40t) y=0.5sin(2pi20t)+2sin(2pi40t)

​可以很容易的看出信号的由频率为20和40的两个分量组成,

其中最高频率为40,根据奈科斯特定律,

  • 在这里我将抽样信号fs设定为100HZ,
    采样点N分别设定为1282048

在这里插入图片描述

分析结果:

​这里的fs是采样频率。而我们通常只关心0-pi中的频谱,因为根据奈科斯特定律,只有f=fs/2范围内的信号才是被采样到的有效信号。

那么,在w的范围内,得到的频谱肯定是关于n/2对称的。

​用100Hz做了128个点FFT之后,因为频率分辨率是100/128(25/32)Hz,如果原来的信号在2Hz或者1Hz有分量,你在频谱上是看不见的,这就表示你越想频谱画得逼真,就必须取越多的点数来做FFT,n就越大,你在时域上就必须取更长的信号样本来做分析。

  • 但是无论如何,由于离散采样的原理,你不可能完全准确地画出原来连续时间信号的真实频谱,只能无限接近(就是n无限大的时候),当n 取不到无限大时,此时,这个就叫做频率泄露。

  • 在采样频率fs不变得情况下,频率泄漏可以通过取更多的点来改善,也可以通过做FFT前加窗来改善,这就是另外一个话题了。

第k个点的实际频率的计算为f(k)=k*(fs/n)

1.4.3 采样点数n与信号幅度之间的影响

从上一节“分析采样点N的数量对FFT结果的影响”我们可以看出不管采样点数目是多少,其频率为20的分量和频率为40的分量的振幅之比依然是1:4。这是为什么呢?

  • 我们知道FFT之后结果就是一个为N点的复数。

  • 每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?

信号二: y = 2 + 0.5 s i n ( 2 p i 20 t ) + 2 s i n ( 2 p i 40 t ) y=2+0.5sin(2pi20t)+2sin(2pi40t) y=2+0.5sin(2pi20t)+2sin(2pi40t)

  • 以128HZ的采样频率对其采样,采样点N=128。
    我们的信号有3个频率分量0HZ、20HZ、40HZ。

在这里插入图片描述

可以看出频率0HZ、20HZ、40HZ对应点的幅值分别为256、36、128。这跟原始信号的幅度有什么关系呢?

结论:

​ 假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。 而第一个点就是直流分量,它的模值就是直流分量的N倍。因此我们可以计算出原始信号的幅值。

根据公式:直流分量的真实幅值为256/128=2,正确

​ 20HZ分量的真实幅值为32/(128/2)=0.5,正确

​ 40HZ分量的真实幅值为128/(128/2)=2,正确

1.4.4 采样点数n, 窗口长度对频谱图的影响

同样,当使用加窗函数时,窗口函数的点数与fft点数之间存在如下关系。

w i n l e n < = n f f t win_{len} <= n_{fft} winlen<=nfft

前面我们数据个数总是2得整数次幂,当数据个数不是2的整数次幂时会自动补零,以保持数据个数为2的整数次幂,那么补零会对FFT产生什么样的影响呢?

信号一: y = 0.5 s i n ( 2 p i 20 t ) + 2 s i n ( 2 p i 40 t ) y=0.5sin(2pi20t)+2sin(2pi40t) y=0.5sin(2pi20t)+2sin(2pi40t)

在这里插入图片描述

结论:

(1)当采样点数量为32时,由于数量比较少,频率分辨率比较低,画出的频谱图不是很逼真,但没有由于添零而导致的其他频率成分。

(2)由于采样点的数目比信号数据个数多,所以信号必须在时间域内加零。致使振幅谱中出现很多其他成分,这是加零造成的。其振幅由于加了多个零而明显减小。

(3)当数据个数超过频率采样点的个数时,FFT会自动切断。

(4)信号也在时域上补零了,但是由于数据的个数比较多,FFT振幅谱看起来比较逼真。

总结:

  1. 如果采样数据比较少,运用FFT变换时,不能很准确的分辨出其中的频率成分。

  2. 添加零后可增加频谱中的数据个数,谱的密度增高了,但仍不能分辨其中的频率成分,还会导致振幅的下降,即谱的分辨率没有提高。

  3. 只有数据点数足够多时才能分辨其中的频率成分。

以上内容可参考:参考

2. 信号的分帧

在代码的实现过程中, 限定了 窗口的点数长度小于nfft变换的点数;

win_length <= nfft

3. 信号的加窗

FT提供了观察信号的新视角,但是FFT也有各种限制,可通过加窗增加信号的清晰度。

3.1 加窗的含义

  • 使用FFT分析信号的频率成分时,分析的是有限的数据集合。

  • FFT认为波形是一组有限数据的集合,一个连续的波形是由若干段小波形组成的。

对于FFT而言,时域和频域都是环形的拓扑结构。

时间上,波形的前后两个端点是相连的。

3.1.1 采集的信号整数个周期

如测量的信号是周期信号,采集时间内刚好有整数个周期,那么FFT的上述假设合理。

12

测量整数个周期(上图)可以得到理想的FFT(下图)

在这里插入图片描述

3.1.2 采集的信号非整数个周期

在很多情况下,并不能测量到整数个周期。

因此,测量到的信号就会被从周期中间切断,与时间连续的原信号显示出不同的特征。

有限数据采样会使测量信号产生剧烈的变化。 这种剧烈的变化称为不连续性。

采集到的周期为非整数时,端点是不连续的。

  • 这些不连续片段在FFT中显示为高频成分。

这些高频成分不存在于原信号中。 这些频率可能远高于奈奎斯特频率,在0~ 采样率的一半的频率区间内产生混叠。

  • 使用FFT获得的频率,不是原信号的实际频率,而是一个改变过的频率。 类似于某个频率的能量泄漏至其他频率。 这种现象叫做频谱泄漏。

频率泄漏使好的频谱线扩散到更宽的信号范围中。

在这里插入图片描述

测量非整数个周期(上图)将频谱泄漏添加至FFT(下图)

在这里插入图片描述

3.2 加窗的作用

  • 可通过加窗来尽可能减少在非整数个周期上进行FFT产生的误差。

  • 数字化仪采集到的有限序列的边界会呈现不连续性。加窗可减少这些不连续部分的幅值。

  • 加窗包括将时间记录乘以有限长度的窗,窗的幅值逐渐变小,在边沿处为0。

  • 加窗的结果是尽可能呈现出一个连续的波形,减少剧烈的变化。 这种方法也叫应用一个加窗。

在这里插入图片描述

加窗可尽可能减少频谱泄漏

在这里插入图片描述

3.3 窗函数的种类

根据信号的不同,可选择不同类型的加窗函数。

要理解窗对信号频率产生怎样的影响,就要先理解窗的频率特性。

窗的波形图显示了窗本身为一个连续的频谱,有一个主瓣,若干旁瓣。

  • 主瓣是时域信号频率成分的中央,旁瓣接近于0。

  • 旁瓣的高度显示了加窗函数对于主瓣周围频率的影响。

对强正弦信号的旁瓣响应可能会超过对较近的弱正弦信号主瓣响应。

一般而言,低旁瓣会减少FFT的泄漏,但是增加主瓣的带宽。

旁瓣的跌落速率是旁瓣峰值的渐进衰减速率。

增加旁瓣的跌落速率,可减少频谱泄漏。

选择加窗函数并非易事。
每一种加窗函数都有其特征和适用范围。

要选择加窗函数,必须先估计信号的频率成分。

  1. 如果信号具有强干扰频率分量,与感兴趣分量相距较远,那么就应选择具有高旁瓣下降率的平滑窗。

  2. 如果信号具有强干扰频率分量,与感兴趣分量相距较近,那么就应选择具有低最大旁瓣的窗。

  3. 如果感兴趣频率包含两种或多种很距离很近的信号,这时频谱分辨率就非常重要。 在这种情况下,最好选用具有窄主瓣的平滑窗。

  4. 如果一个频率成分的幅值精度比信号成分在某个频率区间内精确位置更重要,选择宽主瓣的窗。如信号频谱较平或频率成分较宽,使用统一窗,或不使用窗。

  5. 总之,Hanning窗适用于95%的情况。 它不仅具有较好的频率分辨率,还可减少频谱泄露。 如果您不知道信号特征但是又想使用平滑窗,那么就选择Hanning窗。

即使不使用任何窗,信号也会与高度一致的长方形窗进行卷积运算。本质上相当于对时域输入信号进行截屏,对离散信号也有效。 该卷积有一个正弦波函数特性的频谱。 基于该原因,没有窗叫做统一窗或长方形窗。

3.4 Hamming窗和Hanning窗

Hamming窗和Hanning窗都有正弦波的外形。

两个窗都会产生宽波峰低旁瓣的结果。

  • Hanning窗在窗口的两端都为0,杜绝了所有不连续性。

  • Hamming窗的窗口两端不为0,信号中仍然会呈现不连续性。 Hamming窗擅长减少最近的旁瓣,但是不擅长减少其他旁瓣。

在这里插入图片描述

Hamming和Hanning都会产生宽波峰低旁瓣的结果

在这里插入图片描述

Hamming窗和Hanning适用于对频率精度要求较高对旁瓣要求较低的噪声测量。

3.5 Blackman-Harris窗

Blackman-Harris窗类似于Hamming和Hanning窗。 得到的频谱有较宽的波峰,旁瓣有压缩。 该窗主要有两种类型。

4阶Blackman-Harris是一种通用窗,在高90s dB处具有旁瓣抑制功能,有较宽的主瓣。

7阶Blackman-Harris窗函数有宽广的动态范围,有较宽的主瓣。

在这里插入图片描述

Blackman-Harris窗的结果是较宽的波峰,旁瓣有压缩

在这里插入图片描述
Kaiser-Bessel窗在幅值精度、旁瓣距离和旁瓣高度之间取得了较好的平衡。 Kaiser-Bessel窗与Blackman-Harris窗类似,对于相同的主瓣宽度而言,较近的旁瓣更高,较远的旁瓣更低。

选择该窗通常会将信号泄漏至离噪声较近的位置。

3.6 Flat top窗

Flat top窗也是一个正弦波,穿过0线。

Flat top窗的结果是在频域中产生一个显著宽广的波峰,与其他窗相比离信号的实际幅值更近。

在这里插入图片描述

Flat top窗具有更精确的幅值信息

在这里插入图片描述

面列举了几种常见的窗函数。 选择窗函数并没有一个通行的方法。 下表可帮助您做出初步选择。 请始终比较窗函数的性能,从而找到最适合的一种窗函数。

在这里插入图片描述

3.7 窗函数比对

下图为矩形窗、汉宁窗与汉明窗的时域与频域的波形图,蓝色、黄色与红色分别为矩形窗、汉宁窗与汉明窗。可以发现,在频域,三个窗的主瓣与旁瓣的特征是非常明显的。比如,矩形窗,主瓣最窄,但是旁瓣增益也最高。

在这里插入图片描述

  • 窗函数应该取多长度

上面已经说过,帧长一般为 10~30ms, 之间,接下来就具体验证验证帧长会产生什么影响,为了验证该问题,我们人工造一段很简单的数据进行观察;

假设overlap为窗长一半, FFT点数与窗长一致,避免引入补零等情况,,物理分辨率与观测分辨率一致,即为:
f 0 = F s / n f f t f_0 = F_s/ nfft f0=Fs/nfft

其中 , F s F_s Fs 为信号的采样率, n f f t nfft nfft 为进行FFT的点数

长窗具有较高的频率分辨率,较低的时间分辨率。长窗起到了时间上的平均作用。窗宽的选择需折中考虑。短窗具有较好的时间分辨率,能够提取出语音信号中的短时变化(这常常是分析的目的),损失了频率分辨率。

在这里插入图片描述

3.8 小结

  • 所有时域中的信号都可表示为一组正弦波。

  • FFT变换将一个时域信号分解为在频域中表示,并分析信号中的不同频率成分。

  • 在频域中显示信号有助于发现信号中的干扰、噪声和抖动。

  • 信号中如果包含非整数个周期,会发生频率泄漏。可通过加窗来改善该情况。

  • 数字化仪采集到的有限序列的边界会呈现不连续性。加窗可减少这些不连续部分的幅值。

  • 没有窗叫做统一窗或长方形窗,因为加窗效果仍然存在。

  • 一般情况下,Hanning窗适用于95%的情况。 它不仅具有较好的频率分辨率,还可减少频谱泄露。

请始终比较窗函数的性能,从而找到最适合的一种窗函数。

猜你喜欢

转载自blog.csdn.net/chumingqian/article/details/129229080
今日推荐