信号的频域分析
信号的频域分析方法多种多样,本文主要写一些信号频域分析的方法,主要包含频谱,倒频谱,相干分析,信号的调制与解调等相关内容。 在了解信号的频域分析之前,我们需要先了解一下几个信号分析的基本概念。
FT(Fourier Transformation):傅里叶变换。就是我们理论上学的概念,但是对于连续的信号无法在计算机上使用。其时域信号和频域信号都是连续的。
DTFT(Discrete-time Fourier Transform):离散时间傅里叶变换。即时域离散,频域连续。
DFTD(iscrete Fourier Transform):离散傅里叶变换。在DTFT之后,将傅里叶变换的结果也进行离散化,就是DFT。即时域离散,频域离散。
FFT(sFast Fourier Transformation):快速傅里叶变换。就是DFT的快速算法,工程应用时常用的算法。
FS(Fourier Series):傅里叶级数。是针对时域连续周期信号提出的,结果是离散的频域结果。
DFS(Discrete Fourier Series):离散傅里叶级数。是针对时域离散周期信号提出的,DFS与DFT的本质是一样的。
1 频谱
基本概念
频谱是频率谱密度的简称,是频率的分布曲线。复杂振荡分解为振幅不同和频率不同的谐振荡,这些谐振荡的幅值按频 率排列的图形叫做频谱。频谱将对信号的研究从时域引入到频域,从而带来更直观的认识。一般来说,频谱分析指的是将信号做 傅里叶变换从而进行分析。频谱分析是包括幅频谱和相频谱两张图的。不过最常用的是幅频谱。 频谱分析是最常用和最重要也是最基础的频域分析方法。 频谱的作用:将信号在时间域中的波形转变为频率域的频谱,进而可以对信号的信息作定量解释。如求得动态信号中的各个频率成分和频率分 布范围,求出各个频率成分的幅值分布和能量分布,从而得到主要幅度和能量分布的频率值。
浅谈傅里叶变换
将时域的信号,变换到频域的正弦信号。傅里叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的 无限叠加。而根据该原理创立的傅里叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同 正弦波信号的频率、振幅和相位。傅里叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱) ,可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅里叶反变换将这些频域信号转换成时域信号。
2 能量谱
能量谱是针对能量有限的信号。能量谱也叫能量谱密度,能量谱密度描述了信号或时间序列的能量如何随频率分布。能量谱是原信号 傅立叶变换的平方。信号分为确定信号和随机信号,而确定信号又分为能量信号和功率信号,随机信号一定是功率信号。根据狄里 赫利条件,能量信号可以直接进行傅里叶变换,而功率信号不行。对于无法做傅里叶变换的信号,先求自相关,再做傅里叶。 即能量有限、功率为零的信号为能量信号。能量无限、功率有限的信号为功率信号。所有周期信号都是功率信号;所有有限数量的脉冲信号都是能量信号。
3 功率谱
功率谱是功率谱密度函数(PSD)的简称,它定义为单位频带内的信号功率。 功率谱是针对功率信号来说的。根据维纳-辛钦定理:一段信号的功率谱等于这段信号自相关函数的傅里叶变换。 求功率谱有两种方法,分别为直接法和相关函数法。
4 倒频谱
4.1 基本知识
倒频谱(Cepstrum)也叫倒谱、二次谱和对数功率谱等。倒频谱的工程型定义是:信号功率谱对数值进行傅立叶逆变换的结果。 该方法方便提取、分析原频谱图上肉眼难以识别的周期性信号,能将原来频谱图上成族的边频带谱线简化为单根谱线,受传感 器的测点位置及传输途径的影响小
4.2 倒谱的意义
对于高速大型旋转机械,其旋转状况是复杂的,尤其当设备出现不对中,轴承或齿轮的缺陷、油膜涡动、磨擦、质量不对称等 现象时,则振动更为复杂,用一般频谱分析方法已经难于辩识(识别反映缺陷的频率分量),而用倒频谱,则会增强识别能力。 频谱分析就是为了提取原始信号中的周期性信号的,怎么频谱中的信号还会有周期性?这就又涉及到两个概念: 调制和边频带。 调制分为 幅值调制和频率调制。下面以齿轮的幅值调制为例进行说明:齿轮的振动信号主要包括两部分,分别是齿轮啮合振动 信号(高频)和齿轮轴的转频振动信号(低频),时域和频域曲线分别如下图所示: 调制就是高低频率信号的混合。幅值调制从数学上看,相当于两个信号在时域上相乘;而在频域上,相当于两个信号的卷积。 调制后的信号在时域和频域上分别变为:
上图分别为高频信号和低频信号的时域波形以及频域波形。
调制就是高低频率信号的混合。幅值调制从数学上看,相当于两个信号在时域上相乘;而在频域上,相当于两个信号的卷积。 上图为调制后的信号在时域和频域上的波形.
调制后的信号中,除原来的啮合频率分量外,增加了一对分量,它们是以高频信号特征频率为中心,对称分布于两侧,所以称为边频带。 实际实验中齿轮啮合振动信号(高频)和齿轮轴的转频振动信号(低频)的特征频率可能是有多组的,其调制后的频域信号近似于一组频率间隔较 大的脉冲函数和一组频率间隔较小的脉冲函数的卷积,从而在频谱上形成若干组围绕啮合频率及其倍频成分两侧的边频族,如下图:
倒频谱“方便提取、分析原频谱图上肉眼难以识别的周期性信号”。这里指的周期性信号,就是重复出现的边频带。
倒频谱能较好地检测出功率谱上的周期成分,通常在功率谱上无法对边频的总体水平作出定量估计,而倒频谱对边频成分具有“概括”能力, 能较明显地显示出功率谱上的周期成分,将原来谱上成族的边频带谱线简化为单根谱线,便于观察,而齿轮发生故障时的振动频谱具有的 边频带一般都具有等间隔(故障频率)的结构,利用倒频谱这个优点,可以检测出功率谱中难以辨识的周期性信号。
倒频谱的第二个好处是受传感器的测点位置及传输途径的影响小
对于布置在不同位置的传感器,由于传递路径不同,其功率谱也不相同。但在倒频谱上,由于信号源的振动效应和传递途径的效应分离开来, 代表齿轮振动特征的倒频率分量几乎完全相同,只是低倒频率段存在由于传递函数差异而产生的影响。在进行倒频谱分析时,可以不必考虑信 号测取时的衰减和标定系数所带来的影响。这一优点对于故障识别极为有用。
- 参考:
5 相干分析
5.1 基本概念
相干是信号处理中,衡量确定性信号相似度的术语。相关是概率与统计领域衡量随机变量相似度的术语。 相关性(Correlation):显示两相关变量之间线性关系的强度和方向。在统计学中,相关的意义是用来衡量两个变量相对于其相互独立的距离。 相关性多用于普通的数组计算和时域信号。 相干性(Coherence):与相关性计算得到的信息非常相似,都是衡量两个变量之间的相关程度。相干性多用于频域计算,可以在基于频 率上给出更多的信息。 相关就是信号之间的相似程度,例如一个单位正弦波(幅值、频率都为1)和一个单位余弦波,由于它们在0时刻是正交的,所以不相关。 相干是包含相位信息的,还是一个单位正弦波和一个单位余弦波,它们是相干的,因为具有相同的频率(恒定的相位差)。
5.2 相干信号
两束满足相干条件的信号称为相干信号, 相干条件(Coherent Condition): 这两束信号在相遇区域:①振动方向相同; ②振动频率相同;③相位相同或相位差保持恒定
- 参考:
6 信号的调制与解调
基本概念
调制:调制就是使一个信号(如光、高频电磁振荡等)的某些参数(如振幅、频率等)按照另一个欲传输的信号(如声音、图像等)的特点 变化的过程。(调制是通过改变高频载波的幅度、相位或者频率,使其随着基带信号的变化而变化来实现的。) 解调:是调制的逆过程,作用是从已调信号中取出原来的调制信号。(解调则是将基带信号从载波中提取出来以便预定 的接收者(信宿)处理和理解的过程。) 基带信号:要传递的信息,又称调制信号。 已调信号:调制波(信息)和载波叠加在一起就形成了已调信号。 载波:未受调制的周期性振荡信号称为载波,载波可以是正弦波,也可以是非正弦波(如周期性脉冲序列)。 一般要求正弦载波的频率远远高于调制信号的带宽,否则会发生混叠,使传输信号失真。 调制就是用基带信号去控制载波信号的某个或几个参量的变化,将信息荷载在其上形成已调信号传输,而解调是 调制的反过程,通过具体的方法从已调信号的参量变化中将恢复原始的基带信号。 调制:将各种数字基带信号转换成适于信道传输的数字调制信号(已调信号或频带信号); 解调:在接收端将收到的数字频带信号还原成数字基带信号;
为什么需要调制?
根据电磁波理论,发射天线尺寸为被发射信号波长的十分之一或者更大些,信号才能有效地发射出去;
大气对较高频率范围的信号能传播很远的距离,因此,需要通过大气层远距离传输基带信号,就需要极高频率的载波信号来携带基带信号;
调制能够实现频谱搬移,将低频信号搬移到高频处,这能够降低发射天线的尺度;
低频频带窄,都用低频传输,会造成堵塞,调制能够扩宽传输频带,提高了频率利用率;
调制能够将多路基带信号加载到频率不同的载波上,完成信号的频率分配,使多路信号互不干扰地在同一个信道上传输,实现频分复用;
调制还可以减弱噪声和降低干扰。
什么是解调?
解调是调制的反过程,通过具体的方法从已调信号的参量变化中将恢复原始的基带信号。
6.1 幅度调制
幅度调制是用调制信号去控制高频载波的幅度,使之随调制信号做线性变化的过程。
1 调幅(AM)
常规的双边带幅度调制,简称调幅(AM),其时域表达式为:
其第一项为载波项,第二项为边带项,在调制过程中,携带调制信号信息的只有边带项,因此载波项为无用项,由此就造成了功率的浪费。
2 抑制载波的双边带调制(DSB)
为了避免功率的浪费,考虑到如果在调制过程中直流部分去掉,即去掉(\(A_0\))既可以抑制载波,其时域表达式如下:
比较AM和DSB调制信号的频谱,AM信号的频偏由上边带,下边带,载波分量组成,而DSB由上边带和下边带组成,抑制了载波分量,避免 了功率的浪费,但是上下边带都各自携带了全部的调制信号信息,就相当于同样的信息出现了两次,这就造成了带宽的浪费(结论为DSB 和AM信号的带宽都为2倍的调制信号带宽),进一步寻求改进,即想办法消除一个边带以减小带宽,增大频带利用率。
3 抑制载波的单边带调制(SSB)
产生SSB信号的方法有两种,滤波法和相移法。
3.1 滤波法
首先产生一个双边带信号,再让其通过一个边带滤波器滤除不要的边带即可得到单边带信号。如采用高通滤波器则可滤除下边带,保留上边带:
若采用低通滤波器则滤除上边带保留下边带:
3.2 相移法
相移法的原理为:利用相依网络,对载波信号和调制信号适当相移以便在何处过程中将其中一个边带抵消掉而获得SSB,由此 就不需要实现滤波法中边带滤波器陡峭的边带条件。
实例
调制信号为: \(\mathrm{m}(\mathrm{t})=\mathrm{A}_{\mathrm{m}} \cos \omega_{\mathrm{m}} \mathrm{t}\) ,载波信 号为: \(c(t)=\cos \omega_{c} t\) 则其DSB的时域表达式为:
则保留上下边带的表达式分别为:
可以得出:
其中, \(\hat{\mathrm{m}}(\mathrm{t})\) 为 \(\mathrm{m}(\mathrm{t})\) 的希尔伯特变换。 而相移法的技术难点在于相移网络的制作,很难将 \(\mathrm{m}(\mathrm{t})\) 的所有频率分量精准相移 \(\frac{\pi}{2}\) 综上所述,要实现SSB无论是滤波法和相移法都有其技术难点,因此需要找出一种折衷的方法,能滤除部分边带且较容易实现。
3.3 残留边带调制
残留边带调制(VSB)就是这样一种折衷方法,既克服了DSB占用频带宽的特点,又解决了SSB实现困难的特点。VSB不用陡峭的滤波器,而是用比较平缓的滤波器切除无用边带。
6.2 角度调制
1 FM和PM简介
对于一个信号而言,由于其频率和相位存在微积分的关系,因此调频和调相是可以相互转换的,由此可引出:直接调频,间接调频,直接调相,间接调相。由于调频与调相有这样的关系,以FM为例。
调频信号的时域表达式为其中 \(\mathrm{K}_{\mathrm{f}}\) 称为调频灵敏度。
调相信号的时域表达式为其中 \(\mathrm{K}_{\mathrm{p}}\) 称为调相灵敏度:
直接调频和间接调频各有利弊,直接调频法在实现线性调频的前提下可获得较大频偏,但频率稳定度不高;间接调频法稳定性好但电路复杂,且频偏相对于直接调频要小。
2 窄带调频NBFM与窄带调频WBFM
若FM信号满足:
则称其为窄带调频,否则则称为宽带调频.窄带调频信号的时域表达式为:
其频谱为:
宽带调频时,频谱不再是调制信号的线性搬移,而是一个非线性过程。
6.3 相干解调
相干解调的原理与调制相似,都是频谱搬移,需要在接收端提供与已调信号完全同步的本地载波,与已调信号相乘后,经低通滤波器滤出低频分量。适用于对所有线性调制系统的解调。
6.4 非相干解调
适用于当 \(|\mathrm{m}(\mathrm{t})|_{\max } \leqslant \mathrm{A}_{0}\) 的情况,包络与调制信号 \(\hat{\mathrm{m}}(\mathrm{t})\) 的形状一样,可以直接从包络中提取载波信息,在两种 方法都适用的情况下,非相干解调较为简单,但存在门限效应。门限效应:当输入信噪比低于某一门限后,输出信噪比不再按比例下降,而是急剧恶化,这是由包络检波器的非线性解调作用引起的。
- 参考:
7 希尔伯特-黄变换(HHT)
在介绍希尔伯特变换以及希尔伯特黄变换之前我们首先要了解几个与之相关概念。
7.1 经验模态函数EMD(Empirical Mode Decomposition)
EMD最显著的特点,就是其克服了基函数无自适应性的问题。用EMD有什么好处呢?对于一段未知信号,不需要做预先分析与研究,就可以直接开始分解。这个方法会自动按照一些固定模 式按层次分好,而不需要人为设置和干预。其主要目的是将任意信号(尤其是非平稳非线性时间序列信号)分解为线性稳态信号(IMF),主要功能是把任一个自由的信号分解成为若干个固 有模态函数(IntrinsicModeFunction, IMF)和 一个残余分量,每一个 IMF 代表了原信号不同频率段的振荡变化,反映信号的局部特征,而最后的残余分量则反映信号中的缓慢变化量。
内涵模态分量(Intrinsic Mode Functions, IMF)的两个约束条件
在整个数据段内,极值点的个数和过零点的个数必须相等或相差最多不能超过一个。
在任意时刻,由局部极大值点形成的上包络线和由局部极小值点形成的下包络线的平均值为零,即上、下包络线相对于时间轴局部对称。
7.2 希尔伯特变换(Hilbert Transform HT)
希尔伯特变换也是傅里叶变换的一种扩展,它常常用于通信系统中的调制解调,当然它也可以用于信号的时频分析。 Hibert变换的实质是已知复信号的实部,求该复信号(虚部就是实部的希尔伯特变换),实际接收信号是高频实信号(双边带),是基带信号经载波信号处理以后得到的,有用信息是基带信 号是复信号(单边频谱),而对于复信号对其求包络,求相位等操作较为方便。
希尔伯特变换的条件
信号必须是窄带信号、不含噪声、不是复杂信号、不出现尖峰跳跃、数据尽量平稳,没有“骑波”,避免不可解释的负频率出现等。 带宽:信号频率的宽度,即信号所含谐波最高频率与最低频率之差 窄带信号:信号带宽远小于中心频率,也就是所含的频率分量区间尽量小 如果是实信号,其具有双边频谱,希尔伯特变换以后获得的瞬时频率、幅度和相位包括负值,无意义。
7.3 希尔伯特黄变换(Hilbert-Huang Transform, HHT)
相比于HT,HHT就多了一个经验模态分解(Empirical Mode Decomposition, EMD),EMD就是把复杂信号分解成从高频到低频的若干 个固有模态函数(Intrinsic Mode Function, IMF),IMF需要满足两个条件:
1 信号极值点的数量与零点数相等或相差为1
2 信号的由极大值定义的上包络和由极小值定义的下包络的局部均值为0(即包络上下对称)
简单的理解就是,EMD是依次提取信号在每个局部的最高频分量的过程,所以每个IMF实际上是一个单频率分量信号,这样我们 就可以对每个IMF分量进行Hilbert变换,从而得到每个分量的Hilbert谱。
希尔伯特-黄变换(HHT)就是先对信号进行EMD求固有模态函数IMFs,然后对各个IMF分量做希尔伯特变换,如下图所示。 因为希尔伯特变换的前提条件是:窄带信号、非复杂信号,平稳信号,但是生活中存在的大部分信号均不满足该条件,为了 使用希尔伯特变换,必须将非线性平稳信号转换为平稳信号,因此,必须使用EMD进行模态的分解,再对分解得到的IMF进行希 尔伯特变换,求得复信号以后再进行进一步的分析。
HHT后得到的是一种时频属性,既包括时域又包括频域的性质,是一种时频分析方法
HHT变换实例
例1
为了更好的理解原始信号经过EMD分解后的情况,我们分别预先设置两个已知的不同频率的信号来进行分解,代码如下:
fs = 60;
ts = 0:1/fs:6-1/fs;
sig1 = 5*sin(2*pi*ts); %低频正弦信号
sig2 = sin(2*pi*20*ts);%调频的高频信号
sig = sig1+sig2;
[IMF,residual,info] = emd(sig); %利用matlab当中自带的emd函数对合成信号进行分解
[hs,f,t] = hht(IMF,fs); %对分解后的信号再进行hht变换
sig_rec = IMF(:,1)+IMF(:,2); %还原信号
plot(ts,sig,ts,sig_rec)
下图是对原始信号进行EMD分解后的不同频率类型的信号,其中IMF1为调频的高频信号,IMF2为低频正弦信号。
经过hht变换后的时频图如下,可以明显看到有两个频率不同的两个信号图形。
重构后的信号图形,蓝色部分为处理前的原始信号,橙色部分为处理后的重构信号。
例二
生成一个简单正弦信号以及频谱图和波形图,便于对照理解,代码如下:
%% 产生原始信号
f1=5; % 信号1的频率
f2=2; % 信号2的频率
f3=10; % 信号3的频率
fs=30; % 采样率
N=fs*60;
t = 0 : 1/fs : (N-1)/fs;
y1=5*sin(2*pi*f1*t)+10*sin(2*pi*f2*t)+8*sin(2*pi*f3*t);
figure(1);subplot(2,1,1);plot(y1,'b');title('原始信号图');
%% 画出原信号的频率谱
n=0:N-1;
f=n*fs/N;
y=fft(y1,N);
mag=abs(y)*2/N;
subplot(2,1,2);
plot(f(1:N/2),mag(1:N/2)); title('频谱图');
%% 画出EMD分解的IMF值的图像
% [imf,residual,info] = emd(y1,'Interpolation','pchip');
emd(y1,'Interpolation','pchip');
%% hht变换
hht(y1,fs);
下图为简单正弦信号的波形图以及频谱图:
下图为经过EMD模态分解后的信号的图形:
参考:
信号处理.
8 傅里叶变换FT(Fourier Transformation)
8.1 傅里叶变换FT(Fourier Transformation)
基本知识
简单来说傅里叶变换的基本目标是将时域的信号,变换到频域的正弦信号。 傅里叶原理表明:任何连续测量的时序或信号,都可以表示 为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅里叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同 正弦波信号的频率、振幅和相位。
和傅里叶变换算法对应的是反傅里叶变换算法。该反变换从本质上说也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。 因此,可以说,傅里叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处 理、加工。最后还可以利用傅里叶反变换将这些频域信号转换成时域信号。 傅里叶变换使一种线性的积分变换,这种变换是从时间转换为频率的变换或其相互转换。那么为什么要使用傅里叶变化呢?它可以很容易的将 信号分解为频域里各种不同频率的信号,又由于频域分析具有很多时域所不具有的特点,故可以比较方便的对原信号进行分析。
matlab中利用fft函数实现快速傅里叶变换
MATLAB中的fft函数使用快速傅里叶变换算法来计算数据的傅里叶变换。以正弦信号x为例,该信号是时间t的函数,频率分量为15Hz和20Hz。 使用在10秒周期内以1/50秒为增量进行采样的时间向量。
代码如下:
Ts = 1/50;
t = 0:Ts:10-Ts;
x = sin(2*pi*15*t) + sin(2*pi*20*t);
plot(t,x)
xlabel('Time (seconds)')
ylabel('Amplitude')
%%计算信号的傅里叶变换,并在频率空间创建对应于信号采样的向量f
y = fft(x);
fs = 1/Ts;
f = (0:length(y)-1)*fs/length(y);
如图:
以频率函数形式绘制信号幅值时,幅值尖峰对应于信号的15 Hz和20 Hz频率分量。该变换还会生成尖峰的镜像副本,该 副本对应于信号的负频率。为了更好地以可视化方式呈现周期性,可以使用 fftshift 函数对变换执行以零为中心的循环平移。
n = length(x);
fshift = (-n/2:n/2-1)*(fs/n);
yshift = fftshift(y);
plot(fshift,abs(yshift))
xlabel('Frequency (Hz)')
ylabel('Magnitude')
如图:
有关傅里叶变换的更多文章如下,讲的都很详细而且通俗易懂,大家可以学习参考:
参考:
8.2 离散傅里叶变换(DFT)
离散傅里叶变换(DFT)是数字信号处理中非常有用的一种变换,因为它是频域也离散化的一种傅里叶变换。也就是说,时域和频域都离散化了,这样 使计算机对信号的时域、频域都能进行计算;另外DFT作为有限长序列的一种傅里叶表示法在理论上相当重要;最后由于DFT有多种快速算法。使得信 号处理速度有非常大的提高。
离散傅里叶变换(DFT)是离散傅里叶级数(DFS)引伸出来的, 这二者的时域、频域都是离散的,因而它们的时域、频域又必然是周期的。但是DFT是 针对有限长序列的,实际上,它是取周期序列的DFS的一个周期的对应关系来加以定义和研究的,因而它隐含有周期性的。
为了对时域离散以及频域离散有更好的理解,如下图较为形象的表达了时域与频域离散或者连续的情况:
时域连续,频域离散:
时域离散,频域离散:
时域连续,频域连续:
(1)由傅里叶变换(FT)演化出离散时间傅里叶变换(DTFT)
离散化的目的:以计算机为代表的数字处理系统只能存储和处理有限长度的离散数字信号,且无法直接进行连续积分运算。 所以需要对信号离散化。 这里的离散指的仅仅时域离散,频域不离散。
傅里叶变换:
由采样定理知,序列可以看作在满足采样定理的条件下对连续信号进行采样得到即:
将时域间隔单位归一化后 \(\Delta t\) 取1s,得到:
上式是将连续傅里叶变换中的时域信号进行离散化后得到,称离散时间傅里叶变换(DTFT-Discrete-time Fourier Transform) 但是,DTFT仍未达到便于数字系统处理的目的。 即:时域序列的长度仍然是无限长的;信号在频域仍然是连续的。因此,还需要对频域信号进行离散化演化出DFT。
(2)离散时间傅里叶变换(DTFT)演化出离散傅里叶变换(DFT)
实际上,对DTFT而言,其频域变换结果是以 2π 为周期的连续周期函数 \(e^{-jwn}\) 。 为此,对时限信号在频域内以 \(\frac{2\pi}{N}\) 为间隔对DFTF的变换结果进行频域取样 把 \(2\pi\) 分为N − 1 段,即有N个点,第k 个点为 \(\omega\rightarrow k\cdot\frac{2\pi}{N}\) ,截取一个频域周期 \(0 \le k\le N-1\) DTFT中x[n]是无限长的,现在把它限制在有限长 \(0 \le k\le N-1\),综上,有:
显然上式在频域内也是离散且有限的,这非常适合于计算机等数字信号处理系统来进行处理。该式实际上给出的是非周期离散序列的离散傅里叶变换 (DFT- Discrete Fourier Transform)
(3) 傅里叶级数(FS)演化出离散傅里叶级数(DFS)
对周期为T的连续信号 \(\tilde{x}(t)\) 而言,其傅里叶级数为:
其中 \(\Omega=\frac{2\pi}{T}\) ,它也是频域中两条相邻谱线的间隔(也就是说FS是时域连续,频域离散的)
对周期为N 的周期离散序列 \(\tilde{x}(n)\)
上式即离散傅里叶级数(DFS- Discrete Fourier Series)
(4)离散傅里叶级数(DFS)演化出离散傅里叶变换(DFT)
若离散周期序列 \(\tilde{x}(n)\) 的一个周期取出来,记作x(n) 并且将DFS变换结果中的一个周期取出来,记作X(jkΩ)则有:
上式本质上与离散傅里叶变换(DFT)相同(仅差一个 \(\frac{1}{N}\) 由此可见,离散傅里叶变换(DFT)可以从DTFT延伸而来,也可以认为是从DFS演变得到
傅里叶变换的比较
如上图可以观察到:除了截取周期的DFT,计算公式带积分的是非周期的,计算公式带累加符号的是周期的。
结合前述特性图示可知,除离散傅里叶变换外,若某个信号在时域(或频域)内是周期的,则经变换(或反变换)后其变换 结果在频域(或时域)内是离散的;若信号在时域(或频域)内是离散的,则其变换(或反变换)结果在频域(或时域)内是周期的。周期性和离散性呈现出对偶关系。 离散傅里叶变换(DFT)提供了一种在时域和频域内均是离散的信号变换方法。不过,当信号采样点数过多时,离散傅里叶变换计算量特别大,导致计算需要消耗许多时 间。因此,技术上我们采用的是DFT的改进计算方法——快速傅里叶变换(FFT)
参考: 离散傅里叶变换.
8.3 短时傅里叶变换(STFT)
(1)基本概念
傅里叶变换只反映出信号在频域的特性,无法在时域内对信号进行分析。为了将时域和频域相联系,Gabor于1946年提出了短时傅里叶变换(short-time Fourier transform ,STFT),其实质是加窗的傅里叶变换。STFT的过程是:在信号做傅里叶变换之前乘一个时间有限的窗函数 h(t),并假定非平稳信号在分析窗的短时间隔内是平稳的,通过窗函数 h(t)在时间轴上的移动,对信号进行逐段分析得到信号的一组局部“频谱”。
傅里叶变换非常擅长分析那些频率特征均一稳定的平稳信号。但是对于非平稳信号,傅立叶变换只能告诉我们信号当中有哪些频率成分——而这对我们来讲显然是不够的。我们还想知 道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析。
(2)短时傅里叶变换原理介绍
短时傅里叶变换的核心思想是对信号进行分段处理从而达到对信号的时频分析,如何对信号进行分段处理呢?一般我们通过加窗的方法来截取信号的片段。定义一个窗函数 \(\textrm{w}(t)\) ,比如这样。
将窗函数位移到某一中心点 \(\tau\),再将窗函数和原始信号相乘就可以得到截取后的信号 y(t)
一般我们很少选用矩形窗,因为矩形窗简单粗暴的截断方法会产生的频谱泄露以及吉布斯现象,不利于频谱分析。
对原始信号 x(t) 做 STFT 的步骤如下。首先将窗口移动到信号的开端位置,此时窗函数的中心位置在 \(t = \tau_0\) 处,对信号加窗处理
然后进行傅里叶变换:
由此得到第一个分段序列的频谱分布 \(X(\omega)\) 。在现实应用中,由于信号是离散的点序列,所以我们得到的是频谱序列 X[N]。 为了便于表示,我们在这里定义函数 \(S(\omega, \tau)\) ,它表示,在窗函数中心为 \(\tauτ\) 时,对原函数进行变换后的频谱结果 \(X(\omega)\) ,即:
对应到离散场景中,\(S[\omega, \tau]\) 就是一个二维矩阵,每一列代表了在不同位置对信号加窗,对得到的分段进行傅里叶变换后的结果序列。
完成了对第一个分段的FFT操作后,移动窗函数到 \(\tau_1\) 。把窗体移动的距离称为 Hop Size。移动距离一般小于窗口的宽度,从而保证前后两个窗口之间存在一定重叠部分,我们管这个重叠叫 Overlap
重复以上操作,不断滑动窗口、FFT,最终得到从 \(\tau_0 \sim \tau_N\)
最终我们得到的 S ,就是 STFT 变换后的结果。
(3)matlab中的应用
在进行短时傅里叶变换matlab当中的应用分析前,我们再次明确一下目标,即为什么要进行时频分析?先说一下傅里叶变换的缺点:
1.傅里叶变换只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。因此时域相差很大的两个信号,可能频谱图一样。
2.对于信号中的突变,傅里叶变换很难及时捕捉。而在有些场合,这样的突变往往是十分重要的。
即傅里叶变换非常擅长分析那些频率特征均一稳定的平稳信号。但是对于非平稳信号,傅立叶变换只能告诉我们信号当中有哪些频率成分——而这对我们来讲 显然是不够的。我们还想知道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析
代码示例
close all; clear; clc;
fs = 1000;
t = 0:1/fs:1 - 1/fs;
% 窗口大小,推荐取 2 的幂次
wlen = 256;
% hop size 即移动步长,一般要取一个小于 wlen 的数,推荐取 2 的幂次
hop = wlen/4;
% FFT 点数,理论上应该不小于wlen,推荐取 2 的幂次
nfft = 256;
%示例信号
x = [10 * cos(2 * pi * 10 * t), 20 * cos(2 * pi * 20 * t),...
30 * cos(2 * pi * 30 * t), 40 * cos(2 * pi * 40 * t)];
figure;
subplot(2, 2, 1);
plot(x);
% 随便选的一个窗函数
win = blackman(wlen, 'periodic');
[S, f, t] = mystft(x, win, hop, nfft, fs);
subplot(2, 2, 2);
PlotSTFT(t,f,S);
%对上述生成的x信号进行倒叙排列
x = x(end:-1:1);
subplot(2, 2, 3);
plot(x);
win = blackman(wlen, 'periodic');
[S, f, t] = mystft(x, win, hop, nfft, fs);
subplot(2, 2, 4);
PlotSTFT(t,f,S);
可以看到,在 FFT 中无法区分的频谱图像在 STFT 中区分就非常明显,可以看出按照不同的时间分段,频谱分布的变化
为了更好地理解,将右上角的图做一次三维旋转:
可以非常清晰地看出频率分布随时间的变换。注意到分界线处存在异常的高频成分(就是 STFT 图像中那三条竖线),这是因为时域信号突变导致的高频成分。
spectrogram函数与stft函数的对比
在老的版本中,Matlab 中 STFT 的函数名为 spectrogram,而在新版本中,引入了新的函数 stft,用法和我上面的实现的程序基本一致
close all; clear; clc;
fs = 1000;
t = 0:1/fs:1 - 1/fs;
% 窗口大小,推荐取 2 的幂次
wlen = 256;
% hop size 即移动步长,一般要取一个小于 wlen 的数,推荐取 2 的幂次
hop = wlen/4;
% FFT 点数,理论上应该不小于wlen,推荐取 2 的幂次
nfft = 256;
x = [10 * cos(2 * pi * 10 * t), 20 * cos(2 * pi * 20 * t),...
30 * cos(2 * pi * 30 * t), 40 * cos(2 * pi * 40 * t)];
figure;
subplot(1, 3, 1);
win = blackman(wlen, 'periodic');
[S, f, t] = mystft(x, win, hop, nfft, fs);
PlotSTFT(t,f,S);
title('My STFT');
subplot(1, 3, 2);
[S1, f1, t1] = spectrogram(x, win, wlen - hop, nfft, fs);
PlotSTFT(t1, f1, S1);
title('spectrogram');
subplot(1, 3, 3);
[S2, f2, t2] = stft(x, fs, 'Window', win, 'OverlapLength',wlen - hop,'FFTLength',nfft);
PlotSTFT(t2, f2, S2);
title('stft');
生成图像如下:
要注意的是spectrogram 输出的是单边谱,而 stft 输出的是双边谱,spectrogram 还可以输出功率谱,而 stft 不行。
STFT变换的缺点
简单来说stft变换就是加窗的傅里叶变换,它克服了福利叶变换局部分析的能力不足的缺点。但其窗口一经确定,便不能改变,所以其不能根据待分析信号频率的改变而改变分辨率。
窗太窄,窗内的信号太短,会导致频率分析不够精准,频率分辨率差;
窗太宽,时域上又不够精细,时间分辨率低。
从定量的角度来看,STFT的时间分辨率取决于滑移宽度 H ,而频率分辨率则取决于 \(\frac{F_s}{H}\) ,显然,一方的增加必然意味着另一方的减小。这就是所谓的时频测不准原理,具体关系为:
另外,固定的窗口大小过于死板。对低频信号而言,有可能连一个周期都不能覆盖;对高频信号而言,可能覆盖过多周期,不能反映信号变化。
参考:
9 小波变换
基本概念
小波变换是一种信号的时间——尺度(时间——频率)分析方法,它具有多分辨分析的特点,而且在时频两域都具 有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可改变,时间窗和频率窗都可以改变的时频局部化分析 方法。即在低频部分具有较低的时间分辨率和较高的频率分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很 适合于分析非平稳的信号和提取信号的局部特征,所以小波变换被誉为分析处理信号的显微镜。 小波变换:用于提取信号的局部特征(时域+频域信息)
对比傅里叶变换与小波变换
傅里叶变换的基函数是三角函数,其作用域是信号的整个时间域,无法得到信号的局部特征(即只能获取一段信号总体 上包含哪些频率的成分,但是对各成分出现的时刻并无所知);尽管采用“加窗”的思想,改进得到短时傅里叶变换,可以 提取信号得局部特征,但是由于短时傅里叶变换窗口固定,宽度相等,其特征提取效果并不好,无法满足非稳态信号变化的特 征需求,故而引入小波变换,使得“窗口宽度”不一致,从而更好的实现局部特征提取。
如图:
对二者的优缺点进行比较总结:
傅里叶变换的缺点
1 不能刻画时间域上信号的局部特征(即无法获取各频率出现的时间信息);
2 对突变和非平稳信号的效果不好,没有了时域分析。
短时傅里叶变换的缺点
1 对于时变的非稳态信号,高频适合小窗口,低频适合大窗口。然而短时傅里叶(STFT)的窗口是固定的,在一次STFT中,宽度不会变化,所以STFT还是无法满足非稳态信号变化的频率需求。
小波变换的优点
1 它继承和发展了短时傅里叶变换的局部化思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具;
2 它的主要特点是通过变换能够充分突出问题某些方面的特征,能对时间(空间)频率的局部化分析,通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低 频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。
小波变换的缺点
1 小波基的选取太难了,并且不同的小波基分析结果不同
9.1 连续小波变换(CWT)
小波变换的基本概念
将傅里叶变换中无限长的三角函数基换成了有限长的会衰减的小波基。小波变换公式如下:
傅里叶变换公式如下:
从公式可以看出,不同于傅里叶变换,变量只有频率w,小波变换有两个变量:尺度因子a(scale)和平移因子 \(\boldsymbol{\tau}\) (translation)。尺度a控制小波 函数的伸缩;平移量 \(\boldsymbol{\tau}\) 控制小波函数的平移。尺度a就对应于频率(反比),平移量 \(\boldsymbol{\tau}\) 就对应于时间。 当伸缩、平移到这么一种重合情况时,也会相乘得到一个大的值。这时候和傅里叶变换不同的是,这不仅可以知道信号有这样频率的成分,而且知道它在时域上存在的 具体位置。而当我们在每个尺度线都平移着和信号乘过一遍后,我们就知道信号在每个位置上都包含哪些频率成分。 傅里叶变换仅能知道信号的频率成分,小波变换不仅能知道信号的频率成分,还能知道各频率成分出现的时刻。
小波变换:
将傅里叶变换中无限长的三角函数基换成了有限长的会衰减的小波基。
当伸缩、平移到这么一种重合情况时,也会相乘得到一个大的值。这时候和傅里叶变换不同的是,这不仅可以知道信号有这样频率的 成分,而且知道它在时域上存在的具体位置。而当我们在每个尺度线都平移着和信号乘过一遍后,我们就知道信号在每个位置上都包含哪些频率成分