matlab 画连续信号matlab幅频特性曲线线以及采样频率为1k,300,200Hz的matlab幅频特性曲线线

使用matlab进行频谱分析时若干问题解釋

作者:jbb0523(彬彬有礼)

本文共说明了以下问题:

一、在matlab中如何表示频率为f1以采样率f抽样后所得到的数字信号?如此表示的依据是什么

②、使用matlab画出的频谱(一般是幅度谱或称振幅谱)的横坐标轴的意义是什么?如何根据横坐标轴的值得到其所对应的实际频率

三、实数序列嘚频谱除第零个点和第N/2个(当N为偶数时)点外(从0~N-1),其它具有共轭对称性质;复数序列呢

四、频率分辨率指的是什么?高分辨谱和高密度譜有何区别有何作用?

约定:对于信号cos(wt)它是以周期为2*pi/w为周期的信号,角频率w=2*pi*f我们经常这样称呼这个信号:它的角频率为w,频率为f Hz周期T=1/f秒;

在matlab中仿真也好,实际中处理的信号也罢一般都是数字信号。而采样就是将信号数字化的一个过程设将信号s1(t)数字化得到信号,其中n=[0…N-1]N为采样点数。

我们来解释一下s1(n)为什么说s1(n)=cos(2*pi*f1/f*n)表示以采样率f对频率为f1的信号进行采样的结果呢?采样顾名思义,就是对信号隔一段時间取一个值而隔的这段时间就是采样间隔,取其倒数就是采样率了那们我们看s1(n)=cos(2*pi*f1/f*n),将前面的参数代入当n=0时,s1(0)=cos(0),当n=1时,s1(1)=cos(2*pi*)当n=2时, s1(2)=cos(2*pi*),当n=3时,s1(3)=cos(2*pi*)这昰不是想当于对信号s1(t)的一个周期内采了三个样点呢?对一个频率为1000Hz的信号每周期采三个样点不就是相当于以3倍于频率的采样率进行采样呢注意,当n=3时相当于下一个周期的起始了

我们在matlab中输入以下命令:

我们对图1进行一下解释,以说明图中的横坐标轴的所代表的意义

如果在范围内观察信号s1(t)的频谱,则应该在和-2*pi*1000两个频点上有两根谱线而对采样后的数字信号,频率坐标轴范围-2*pi**pi*3000/2将被归一化到-2*pi*(00~2*pi*(00即-pi~pi范围内因此將在+2*pi*和-2*pi*即+2*pi/3和-2*pi/3的两个频点上有两根谱线。注意此时坐标轴上的2*pi代表着3000Hz的频率范围。

另外还有一点应该明白的是时域采样意味着频域的周期延拓,即-pi~pi上的谱线与范围内的谱线是一模一样的其中M为任意的整数。更通俗的说a~b之间的频谱与a+M*2pi~b+M*2pi之间的频谱是一模一样的。因此-pi~0之间嘚频谱与pi*2pi之间的频谱是一样的

在matlab中,如果仅简单的执行plot绘图命令坐标横轴将是1~N,那么这1~N代表着什么呢是的,应该代表0*2pi应用到上面嘚例子即是0~3000Hz的频率范围。

则可得其频谱如图2所示:

由图可得两个峰值的位置基本与图1相同,这由其傅里叶表达式也可以得出此结论

以仩分别说明了余弦和正弦的频谱,而且余弦和正弦均是实数序列实数序列的离散傅里叶变换(DFT)具有共轭对称性质(此性质可百度或查阅数芓信号处理相关书籍或自行推导,很简单的)这从图中也可以看出。(画图时取其模值共轭取模与原先数取模将变成相等)

在matlab中输入鉯下命令:

从图3可以看出,对于一个复数序列求频谱它的幅度谱将不再是对称的两根谱线。其实经过类似于实数序列的推导可以得出複数序列的频谱将不再具有类似于实数序列的共轭对称性质。

对比图3和图4可知当频率为正值时,峰值将在1~32范围内;而当频率为负值时峰值将在33~64之间。此性质可通俗的描述如下:

计算公式如下:设幅度谱峰值当k=k1时出现则s(t)的频率为:

同理,可推出如下性质:

计算公式如下:设幅度谱峰值当k=k1时出现则s(t)的频率为:

3)下面引入一个新的概念:频率分辨率

频率分辩率是指频域取样中两相邻点间的频率间隔。更确切的说是如果某一信号含有两个频率成分f1和f2Of=|f2-f1|,频率分辨率的概念是如果频率分辨率大于Of对信号进行谱分析后将不能视别出其含有两个頻率成分,这两个频率将混叠在一起

以下是摘自华科姚天任《数字信号处理(第二版)》第92页的一段:

在matlab中输入以下命令计算其频谱:

從图5中可以看出能够分辨出f1=1000Hz和f2=1100Hz两个频率分量。

我们利用上面的理论来计算一下此时的频率分辨率:

因为F<f2-f1=100Hz因此能够分辨出两个频率分量。

苐一种尝试:fs不变仍为3000Hz即奈奎斯特定理仍然满足,s5(t)的最高频率分量1100Hz的两倍但将采样点个数N减小为24个,在matlab中输入以下命令:

第二种尝试:采样率fs升为8000Hz即满足奈奎斯特采样定理,大于信号s5(t)的最高频率分量1100Hz的两倍采样点个数N不变,仍为64个在matlab中输入以下命令:

由图6和图7可鉯看出,这两种尝试虽然满足奈奎斯特采样定理但都不能分辨出两个频率分量,用前面的理论知识可以作如下分析:

因此以上两种尝试均不能分辨出频率间隔为100Hz的两个频率分量

4)最后我们引用高密度谱的概念,如图6所示频谱很不平滑,呈很明显的折线状态我们在matlab中輸入以下命令:

图8是将图6中的信号在时域补了104个零后才进行谱分析的。比较图6与图8虽然相对于图6来说图8的频率分辨率并没有增加,但其烸个点所代表的频率更小了也就是密度更高了(同样3000Hz的频率,图6中使用了24点而图8中使用了128点),这就是高密度谱通常可以靠补零的方式来提高频谱的密度,但补零不能提高频率分辨率很多人在此很迷惑,在末尾加零后使一个周期内的点数增加,必然使样点间隔更菦谱线更密,事以前看不到的谱分量就可以看到了能够看到更多的谱,不是提高分辨力了吗其实加零后,并没有改变原有记录的数據原有数据的频谱一开始就存在,我们只是有的看不见加零后只是让我们看见原来本就存在的频率,也就是说原始数据代表的该有嘚频率就有,没有的频率加再多的零(极限是成连续的)也没法看见。

在数字信号处理中高分辨率谱和高密度谱是较为易混淆的两个概念。获得高分辨率谱的途径是增加信号采样的记录时间tp而高密度谱则是通过在时域补零得到的。高分辨谱的用途很显示可以分辨出頻率间隔更小的两个频率分量,那么高分辨率谱有什么作用呢要想明白高密度谱的概念,就不得知道一个名词:栅栏效应高分辨率谱僦是为了减小栅栏效效的。实际信号是无限长的其频谱是连续的,但是要用计算机对信号进行频谱分析就必须把它截短使之成为有限長度为tp的信号,这样的截短相当于对信号加矩形窗经过加窗截取,信号的周期变为tp,其频谱相应地由原来的连续谱变为离散谱离散谱的譜线只在f=1/tp的整数倍的位置上才出现,于是谱线间的实际信号的谱线有可能被挡住而损失掉这称之为栅栏效应。例如截取信号长度为tp=0.5s则鈳得到的谱线为2Hz,4Hz6Hz,8Hz…,若信号中包含频率为7Hz的分量则该分量将被栅栏挡住,无法显示出来

【1】姚天任.数字信号处理(第二版)[M].华中科技大学出版社,2000.

【2】万灵达.基于FFT的高精度频率估计算法研究[D].西安电子科技大学2010.

}

本文欢迎非商业目的的学习分享轉载转载请附上原文链接及作者ID

本文为作者自身的一个学习总结,大部分内容在相关教材上也可以找到有空的也会不定期更新。本身吔在学习的过程中出现错误在所难免,欢迎大家在留言区指正看到的话我都会及时回复的。
文章中使用的数据有需要的话可以从此处進行

从大二到现在接触傅里叶变换已经好几年了对傅里叶变换的基本概念与方法和使用的注意事项也都有所了解,但动手方面一直较为欠缺最近刚好又重新在做相关方面的可以,顺手通过Matlab把整个信号的FFT和相关的时频概念都串起来复习一下方便以后查找。

不同于一般教程中使用生成的函数进行分析本文直接使用一段实际采集的电机径向的振动信号进行分析处理,更真实地符合现实情况

傅里叶变换的基夲公式基本上可以在任何一本有关信号处理的大学教材或者相关的培训PPT上找到在这里不再赘述。而关于傅里叶变换究竟是什么网上有佷多通俗化的解释,看到的比较好的文章有知乎的一篇专栏:另外b站上也有一个国外大神3Blue1Brown制作的一个可视化效果非常出众的短片:。

简单来說就是任何一个时域信号都可以用一系列正弦函数sin(nx)的和来表示并且使用的正弦函数项越多,所得到的“模拟信号”也就更接近真实信号信号的傅里叶变换实际上就是求这一系列正弦函数系数的过程。

至于为什么可以对一个信号进行傅里叶变换和为什么能这么对信号进行變换这个问题我一直到研一上完“矩阵分析”和“数字信号处理”这么课之后才有了比较清楚的认识。无论是傅里叶变换短时傅里叶變换,还是后面会谈到的小波变换经验模态分解。其本质都是时域信号在线性空间正交基上的分解与重构而信号分析的重点则在于如哬针对不同的信号来选择相应合适的线性空间正交基,或者说各类变换的“核函数”

至于为什么学的时候教的都是傅里叶变换而实际用嘚函数都是FFT(快速傅里叶变换),这是

其中x为时域信号参数n表示执行n点fft变换
下面举一个最简单的例子

MATLAB 中不同参数设置对FFT结果的影响

根据,若已知信号的最高频率为fc为防止混叠,则选定抽样频率fs应该满足fs≥2fc同时根据选定的频率分辨率f0,则确定进行FFT变换所需要的点数N=fs/f0=Tfs

在采集信号的过程中,为了防止混叠首先应选定抽样频率fc,但同时该频率不建议选得太高否则为了实现理想的频域分辨率,N会变得很大极大地增加FFT过程中的计算量。

现在对上述FFT程序做适当更改比较当数据点数分别等于2048,4096和8192时FFT的变换结果


从结果中切实可以比较清楚的看出频率分辨率随着处理点数的增加而增加了,原始信号为30Hz的振动信号当采样频率增加之后,原本被淹没掉的谐波分量也显示了出来
泹是需要注意的是,当采样时间较长时系统状态可能发生改变,虽然频谱“分辨率”提高了但是又重新引入了不少杂质分量,因此不┅定能够提高频率的分辨率

2. fft变换点数nfft对频率分辨率的影响

在MATLAB中fft函数的基本形式是y=fft(x,n)其中n为fft变换的点数,一般来说为了提高fft计算的效率n都會选择一个2的整数次幂的数值,这里假定该数值为nfft信号x时域数据中点点数为N。一般来说为了不浪费时域在MATLAB中fft函数的基本形式是y=fft(x,n)其中n为fft變换的点数,一般来说为了提高fft计算的效率n都会选择一个2的整数次幂的数值,这里假定该数值为nfft信号x时域数据中点点数为N。一般来说為了不浪费时域中的信息nfft≥N,多出来的点数用0补足这个操作我们称之为补零(zero

在前面有说过频谱的分辨率f0=fs/nfft,nfft为进行fft变换的点数当我們进行补零操作后,参与fft变换的点数有N变为nfft变大了,看起来频谱的分辨率f0增加了我们在没有增加数据量的情况下提高了频谱的分辨率,上述说法是不准确的

这里有两个概念需要说明,一个是物理分辨率一个是计算分辨率

物理分辨率:f0=1/T Hz只和采样时间有关

这里借用Φ的几幅图片对这个概念进行一下说明。下面第一幅图是原始数据图像第二幅图是补零后的数据图像。
对比两幅图片其实可以发现补零后的fft的分析对象发生了改变。我们知道实际信号一般是无限长序列而FFT针对的序列总是有限长度的,因此DFT假设实际信号为对输入的有限长序列信号的周期延拓。将上面两幅图分别进行周期延拓之后可以得到下面的周期序列。
对比上面两幅图其实可以看到对于同样长喥的分析数据,通过补零得到的数据可以看做对原始数据加窗后得到的数据而对数据加窗就会在频域上产生频谱泄露,这也就解释了为什么补零能提高频域的分辨率但却无法提供更多的信息

下面在举来说明这个问题,以256Hz的采样率对70Hz的正弦波采集1s的数据并对该段数据做FFT變换,可以得到下列图像可以看到FFT准确地描述了原始信号的频谱分量。
当我们队原始信号进行补零操作后观察得到的FFT图像如下。可以非常明显的看到频谱泄露的现象当我们把70Hz附近的图像放大之后,可以看到原本的谱线变成了类似于sinc(f)的形式这也就印证了前面印证湔面加窗的说法。因为时域上的加窗等于频域上的卷积而矩形窗FFT的结果就是一个sinc()函数。
对于上述问题有一种解决方案是用本身的数據代替零点来补足缺少的问题这种方法也存在一些问题,这里不做讨论而是介绍另外一种。通过对补零后的数据添加类似hann(hanning窗)等窗函数来减小频率泄露的问题。这样做的原因是时域加窗等于频域上的卷积而合适的窗函数在频域上的能量较为集中,频谱泄露的情况吔能有所减轻但加窗又会出现一些其他的问题,可以参考我的另外一边文章
最后我们来看一下不同补零形式所体现的效果从上到下分別是未补零,直接补零和加窗补零
最后还是通过MATLAB来实践一下不同nfft点数的FFT处理效果。


通过观察上述fft处理后的图像可以发现与原始信号相仳,直接补零虽然看似提高了频域的分辨率但也造成了较明显的频谱泄露现象。而如果以增加FFT点数后的FFT变换效果为参考加窗补零这种方法不仅在一定程度上提高了频谱的分辨率,而且与直接补零相比还叫好地抑制了频谱泄露的现象

说了这么久补零的局限性,最后简单說一下补零的优点:除了上述提到的(1)使得数据长为2的整数次幂以提高FFT的算法外(2)克服栅栏效应是谱的外观得到平滑,提高谱的分析进度

这里盗一张我们老师的课程PPT来进行说明,虽然补零并不能真正地提高频率分辨率但是在非正周期采样的过程中,但是通过合理嘚补零可以对连续谱的谱峰值进行有效地逼近

3. 窗函数对FFT变换效果的影响


这一小节主要对窗函数对作用进行分析,在进行数字信号处理时不可能对无限长(完整)信号进行测量和运算,只能取有限的时间片段进行分析这个过程称为信号截断,时域上的截断等于给原始信號乘上一个窗函数而时域上两个函数相乘,在频域就是其频谱的卷积由于窗函数不可能无限宽,其频谱不可能为冲激励函数信号的頻谱与窗函数的卷积必然产生拖尾现象,造成频谱泄露原始谱线的能量因为与窗函数的卷积被分散到了两个较宽的频带当中,造成了能量泄露

频谱泄漏是由FFT算法中的一个假设导致的即持续精确地重复时间记录,且时间记录中包含的信号在对应时间记录长度的间隔内呈周期性若时间记录的周期数为非整数, 便违反该假设导致频谱泄漏。另一种看法是信号的非整数周期频率分量未与频谱频率线之一精確吻合

您仅可在两种情况下保证获得整数周期第一种情况是,您对测量的信号进行同步采样因此可按需获取整数周期。

另一种情况昰您捕获的瞬时信号可完全融入时间记录。但是多数情况下,您测量的未知信号是平稳的即该信号在采集前、中、后都存在。这时您就无法保证采样的是整数周期。频谱泄漏对测量造成干扰来自给定频率分量的能量将分散至相邻的频率线或仓。您可使用窗口将茬非整数周期内进行FFT产生的效果最小化。

以矩形窗为例有限宽度的矩形窗在频谱中的图像为sinc()函数。主瓣的宽度会随着N采样点数的增加而減小从而降低频域卷积过程中造成的能量泄露。


因为在进行FFT的过程中时域的截断是必然的,因此频域泄露也是必然的因此只能想办法来减少截断过程中造成的频域泄露现象。主要有以下两种方法:(1)加大窗口宽度既增加采样点数N;(2)采用适当的窗函数进行截断;

那什么是适当的窗函数呢?,一般认为窗函数的主瓣宽度应该尽可能的小以提高频率分辨率,同时主瓣和第一旁瓣的幅值差值应该尽可能嘚大并且旁瓣的衰减越快越好,从而减小频谱泄露提高频谱幅值精度

但“鱼和熊掌不可兼得”的朴素真理在这里同样适用,主瓣宽度與旁瓣的幅度的衰减速度相互制约主瓣宽度越小,频率分辨率越高但旁瓣幅值较大,频谱泄露增加导致频谱精度降低反之亦然。

如果仅仅需要求精确获得信号频率而不考虑幅值精度,例如在进行固有频率测量的时候就可以选择主瓣较窄的矩形窗。而如果在分析带囿较强的干扰噪声的窄带信号的过程中则应该选择旁瓣幅度较小的汉宁窗,三角窗等在实际选择窗函数的过程中,需要对各个因素进荇权衡处理下图为各个窗函数的时域和频域波形,主瓣越大的窗旁瓣衰减越快。

通过对实际信号进行分析可以发现对于实际信号来说与不加窗(也可以说是加矩形窗)的频谱相比,加了窗的频谱相对而言较为接近由于主板较宽,频谱泄露因此频谱较为平缓部分谐波分量被淹没。

频谱细化指的是在频谱分析的过程中增加频谱中某个频率分辨率的方法如果我们希望将频段[f1 ~ f2]内的频率分辨率提高K倍,最簡单的方法就是在采样频率不变的情况下将采样点数从N点增加到KN点,但这么做的过程中也同时将许多不感兴趣的频率分辨率也提高了慥成了算力的浪费。
重采样的基本原理如上在进行细化分析的过程中,必须保证原始信号有足够的长度如果想把频段的分辨率提高K倍,就得保证原信号的采样长度为KN这样在每隔K点重采样的过程后,得到新长度为N的复序列频谱细化技术实际上一种降低计算量的方法,洏不是直接使用原始数据来提高频率分辨率的方法

下面通过代码具体分析频谱细化的具体作用:

此部分暂时无法实现,后续进行内容补充

信号的功率谱分析的基本原理

有很长的一段时间内我都混淆了信号的FFT谱与功率谱之间的概念关于信号的FFT和功率谱可以参考我博客中的兩篇文章:和。对功率谱与FFT的基本概念有了比较准地说明

从个人的角度理解,从名字就能看出这两者的主要区别:“FFT-快速傅里叶变换”“功率谱估计”。FFT本质上是一个对信号分解的过程以一种工具。而“功率谱估计”则更侧重估计二字功率谱估计的出发点就是将分析的对象看做是随机信号,希望通过各种方法来准确地通过采样信号准确地估计出真实信号在频谱上的功率分布而FFT则是假定分析的对象昰一个“确定性的周期信号”来直接对其分解,求解相关的系数

而在FFT分析的过程中,为了准确描述信号频谱而采取的类似加窗的操作個人也有几分估计的味道在里面,并且这种“估计”的操作在功率谱估计的过程中也经常能够看到同时功率谱估计过程中使用的类似平均等手段个人感觉也可以用在FFT上,但目前这些手段主要还是运用在功率谱估计上暂时不清楚为何,姑且追寻主流使用这种方法吧

对于隨机信号x(n)来说,实际工作中我们只能得到有限长度N的数据要由这N个数据来估计信号的均值,方差自相关函数,功率谱等其他感兴趣的參数作为一个估计量,我们就需要评价这个估计量的质量一般的评价手段有偏差,方差均方差等几个角度。

经典的非参数功率谱估計方法无法同时在偏差方差等几个角度达到非常理想的估计效果,这也是现代的功率谱估计方法引入参数法功率估计的原因从这个角喥也可以看出功率谱估计和FFT之间的一个显著的区别,我们对信号进行FFT后一般情况下并不会非常在意FFT是否非常准确地还原了原始信号而是主要关注了FFT频谱中的主要分量,而在使用功率谱估计的过程中则会较多地关注相关方法的“准确程度”

关于功率谱估计的质量的具体数學推导过程可以参考比较早的一篇博文,在这里不详细描述只是简单提一下相关的结果。

MATLAB中信号功率谱分析的基本方法

经典非参数法功率谱估计

定义:计算随机信号x(n)的N点观察数据的DFT然后取其幅值的平方并除以N作为对x(n)真实功率谱的估计

对于这种方法来说,周期图法估计的方差不随采样点数N的增加而减小不是功率谱的一致估计,而当N趋向无穷时变差逐渐趋近于零,是真实值的渐进无偏估计

这里有一部汾问题就是,在计算的过程中仔细对比两幅图像,可以发现虽然整体形状一致但手动编程与直接使用MATLAB函数相比,产生PSD整体偏大该问題暂时自己没法解释,进行搁置

定义:信号的功率谱估计等于该信号自相关函数的离散DTFT(离散时间傅里叶变换) 同时对于平稳随机过程来說信号的自相关函数就是功率谱密度函数的逆傅里叶变换,而对于非平稳随机过程来说功率谱密度的逆变换的结果是自想换函数在时域上的平均。
对于相关法来说当时延m取值的最大值为N-1时,相关法和周期法等效随着m取值的增大,相关法功率谱估计质量的方差特性和周期图法功率谱估计会具有一样的缺点

为了降低估计的方差,可以对自相关函数的估计值进行加窗后再进行FFT变换可以证明这种方法的方差要小于原始的相关法,但这种方法同时也降低了频率的分辨率

这种方法是将随机序列分为L段,分别求每一段的周期图最后再进行岼均。可以证明当L趋于无穷时方差趋向于0,是一致估计但平均图方差减小的代价就是偏差增大。这种方法减小方差的同时也降低了谱嘚分辨率主要原因是分段即加窗,窗越短主瓣宽度越大。

5. 重叠平均周期法 (Welch法)

与平均周期法相比这种方法将各段数据进行了一定嘚重叠
在MATLAB中,Bartlett法和Welch法都可以用pwelch函数进行操作关于pwelch函数的使用方法既可以直接参考MATLAB官方文档,也可以参考我博客中的文章

对于几种方法洳果采用一个已知信号进行对比,可以发现:

  1. 周期图法谱估计曲线的波动很大即估计的方差较大
  2. Welch 法谱估计曲线较为光滑,方差减小但汾辨率降低
  3. 对于Welch 法,当数据分段增加时各段数据较短时,谱的分辨率明显下降而谱估计曲线较为光滑,方差较小;反之当数据分段数減小各段数据较长时,谱分辨率明显提高而谱估计曲线波动较大,方差较大
    下面采用以一段已知信号来演示各种功率谱估计方法和FFT变換之间的区别:

前边谈到Welch法和周期图法的特点在上图中都有比较明显的体现同时可以发现如果通过对比可以发现如果将FFT变换的频谱用指數形式表示,则最后的结果和周期图法得到的变换结果相一致关于这一点相信大家也并不会意外。

对于普通的FFT变换来说其能够

  • 准确地反映信号所包含的频率分量,不能反映频率分量存在的时间段
  • 能反映调频信号的频率范围不能反映频率随时间的变化规律
  • 能准确反映信號中某频率分量的总能量,缺不能显示频率分量强度强度随时间的变化功率

简单地来说FFT是一种全局变换在变换的过程中把整个信号的能量给平均了。我们知道FFT(x1+X2)=FFT(X1)+FFT(X2)傅里叶变换是满足线性性质的。如下图所示对于信号1,2来说,这两个信号的FFT频谱一致但信号而的余弦分量和信號1相比,以两倍的幅值出现了1半的时间该谐波分量的总能量及平均幅值一样,故在FFT频谱上显示的幅值一致

对于平稳信号来说,FFT这么分析没有什么问题但对于非平稳信号来说,如果想分辨1、2两种情况仅仅用FFT变换就无法解决问题了,这时就需要借助这一节中需要将到的各类视频分析方法

STFT个人认为是其与传统的傅里叶变换之间并没有非常显著的区别。其本质上就是一个加窗的傅里叶变换通过窗函数的迻动来获取不同时间内的频率分量。傅里叶变换中拥有的性质基本上都可以直接移植到STFT上来对于STFT来说,如果将窗口选得非常小虽然时域上的分辨率非常高,但是由于时间太短频域上的分辨率非常低。而如果窗口选得非常大的话又变成了最原始的加窗傅里叶变换,时間上的分辨率非常低时域和频域上的分辨率不可兼得。时域分辨率和频域分辨率的乘积是一个定值
在MATLAB中,官方给出的短时傅里叶变化伱的函数为spectrogram,这里参考一篇和mathworks的官方文档对该函数进行学习说明,该函数的用法为:
在不给出左侧返回值的情况下该函数直接生成使用短时傅里叶变换得到的频谱图。现对默认参数进行说明:

  • x-输入信号向量默认被平分为8段,不能平分的话进行截断
  • window-若window为整数则使用改长喥的Hamming窗,若为向量使用每段指定长度的窗函数
  • noverlap-各段之间重叠的采样点数,需要为小于window的整数
  • Nfft-进行离散傅里叶变换的点数
  • fs-采样频率不指萣的话默认为1hz
  • S-输入信号x的短时傅里叶变换,每一列包含一个短时局部时间的频率成分估计时间沿列增加,频率沿行增加
  • T-频谱图计算的时刻点
  • 对于输入参数来说nfft越大,频域的分辨率就越高但时间的分辨率就越差,而noverlap影响时间轴分辨率越大的话,时间分辨率越高 下面使鼡一个具体的实例

%计算并显示二次扫频信号的PSD图扫频信号的频率开始于100Hz,在1s时经过200Hz

从上面的对比中可以很明显的看出当重叠较小的频譜在时域上看起来比较连续,但值得注意的是由于这里频率变换比较快,且在指定时间频率成分较为单一当窗函数较大时,指定窗函數内的频率成分较为多样频率分辨率反而较低,需要根据具体的情况进行分辨
现使用实际数据来进行分析,取半个周期的数据

%电机数據均为15Hz内部负载为80load,采样率为5120Hz取1个周期的数据 %由于频率过高,进行降采样频率为1280Hz,采样点为1280
    就是小波变换最常见到的公式和形式僦是连续小波变换,公式如下:

    式子中a代表尺度(在某种意义上就是频率的概念)b是时间参数或者平移参数。不严谨的说 Wf?(a,b)值得是对信號进行小波变换后当频率为a时间为b时的值可以看出一维信号进过变换后成为了二维信号。

    0 a0?=2然后保持平移参数b仍是连续的,则这类小波被称为二进小波变换

接下来使用MATLAB中的具体函数来对信号进行小波分解。

这部分的内容较多另外单独写了一篇文章,可以进行相关的查阅

不过小波变换虽然有诸多优点,但是小波变换始终受到小波基函数的影响且一直没有非常合适的小波及选取理论,导致小波变换茬信号处理的过程中无法实现对信号的自适应变换

关于这部分内容可以参考一篇文章,个人觉得说的非常清楚通俗易懂

Hilbert-Huang变换,即HHT是一種用于处理不平衡无规律数据的存在滋生调整型的数据处理方式。

  • 极值总数与过零总数最多相差1
  • 上包络线和下包络线的均值必须是零

1.采鼡样条差值方法将x(t)的所有极大值点连线E1和极小值点连线E2及平均包络线p(t)

Hilbert变换的频率响应为


早期的Matlab并没有HHT,EMD等内置函数需要下载苐三方的工具箱,或者自信编写相关的函数而在R2018b的版本以后,MATLAB中已经有了相关的原生函数

对随机序列x(t)j进行希尔伯特变换之后得到y(t)由x,y可鉯得到一个解析信号z(t)


同emd函数一样,matlab也是在R2018b之后的版本中才有内置的hht函数

这里如果不采用hht函数, 直接画图而根据hht变换的原理,自行进行Hiltbert變换会发现整体,过程较为繁琐下面列出部分代码


这里转来说明转换为分贝的作用

通常,振幅或功率谱以对数单位分贝(dB)的形式显示該测量单位有助于查看宽动态范围,即可在存在较大信号分量时方便地查看小信号分量分贝是比例单位,其计算方式如下

使用下列公式从振幅值计算分贝值。

其中A是测量振幅Ar是参考振幅。

使用振幅或功率作为同一信号的振幅平方时结果分贝水平是完全一致的。将分貝比乘以2等同于将比例平方。因此无论使用振幅或功率谱,都将得到相同的分贝水平和显示

  1. 《基于MATLAB的机械故障诊断技术案例教程》-张玲玲肖静 高等教育出版社2016

未完待续,持续更新中欢迎大家指出相关问题,写到后面感觉前面突然一堆逻辑错误2333~

留言回复不及时大佬們烦劳发一下邮箱 哈,谢谢大家了!

}

在matlab当中对一个连续信号进行采样往往不是那么容易的理解,这是因为在matlab中画一条连续曲线其实已经进行了采样matlab中所有的曲线都是用点拟合出来的,点越密画出来的曲线也就越清晰,下面用程序说明


由于采样点数为n,所以共有n=10个点用星形标出了

}

我要回帖

更多关于 matlab幅频特性曲线 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信