信号的频域分析方法多种多样,这里针对较为常见的(频谱、能量谱、功率谱、倒频谱、小波分析)集中进行说明。这些方法的MATLAB代码实现参见文章频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱)

在看这篇文章之前可以参看之前的两篇,其中涉及一些时域特征值介绍和能量、功率信号区别的介绍:

Mr.括号:信号的各种时域分析方法的理解

Mr.括号:能量信号和功率信号的分别

文章如要转载请私信与我联系,并注明来源知乎专栏与信号处理有关的那些东东作者Mr.括号。

一、频谱

一般来说,频谱分析指的是将信号做傅里叶变换从而进行分析。频谱分析是包括幅频谱和相频谱两张图的。不过最常用的是幅频谱。

频谱分析是最常用和最重要也是最基础的频域分析方法。在这里不详细展开说了,不了解概念的可以参考这篇文章:

Heinrich:如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧

时常会见到几个概念:DFT,DTFT,DFS,FFT,FT, FS等等。这些概念怎么区分?看这篇文章就能搞懂:一幅图弄清DFT与DTFT,DFS的关系 - BitArt - 博客园

在这里概括一下(不感兴趣的话可以直接跳过):

FT(Fourier Transformation):傅里叶变换。就是我们理论上学的概念,但是对于连续的信号无法在计算机上使用。其时域信号和频域信号都是连续的。

DTFT(Discrete-time Fourier Transform):离散时间傅里叶变换。这里的“离散时间”指的是时域上式离散的,也就是计算机进行了采样。不过傅里叶变换后的结果依然是连续的。

DFT(Discrete Fourier Transform):离散傅里叶变换。在DTFT之后,将傅里叶变换的结果也进行离散化,就是DFT。

也就是说:FT时域连续、频域连续;DTFT时域离散、频域连续;DFT时域离散、频域离散。

FFT(Fast Fourier Transformation):快速傅里叶变换。就是DFT的快速算法,一般工程应用时用的都是这种算法。

FS(Fourier Series):傅里叶级数。是针对时域连续周期信号提出的,结果是离散的频域结果。

DFS(Discrete Fourier Series):离散傅里叶级数。是针对时域离散周期信号提出的,DFS与DFT的本质是一样的。

另外补充几点相关知识:

  • 在实际计算中通常使用快速傅里叶变换(FFT)。它是一种用来计算DFT(离散傅里叶变换)和IDFT(离散傅里叶反变换)的一种快速算法。
  • 随机信号是无法做傅里叶变换的(*这里要再补充)

二、能量谱

要理解能量谱和功率谱,首先要弄明白能量有限信号和功率有限信号(参看之前的文章能量信号和功率信号的分别)。

能量谱也叫能量谱密度,能量谱密度描述了信号或时间序列的能量如何随频率分布。能量谱是原信号傅立叶变换的平方

三、功率谱

功率谱是功率谱密度函数(PSD)的简称,它定义为单位频带内的信号功率。

功率谱是针对功率信号来说的。功率谱的推导公式相对复杂,不过幸运的是维纳-辛钦定理证明了:一段信号的功率谱等于这段信号自相关函数的傅里叶变换。

所以求功率谱就有了两种方法:1.(傅立叶变换的平方)/(区间长度);2.自相关函数的傅里叶变换。这两种方法分别叫做直接法和相关函数法。

功率谱这里存在着一些问题,整理如下:

1.功率谱密度的单位是什么,看有的写的是dB,还有的说是W/Hz。

功率谱的单位是W/Hz,单位是dB时是做了对数处理(10logX)。取对数的目的是使那些振幅较低的成分相对高振幅成分得以拉高,以便观察掩盖在低幅噪声中的周期信号。

2.求功率谱的两种方法有什么区别么?

从原理上讲似乎没什么区别,从MATLAB仿真结果上来看,相关函数法对噪声的抑制效果更好,图线更平滑。(见频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱))

3.FFT和PSD都是表示的频谱特性,帮助我们找出峰值的位置,那么有了FFT为什么还要提出PSD?

信号分为确定信号和随机信号,而确定信号又分为能量信号和功率信号,随机信号一定是功率信号。根据狄里赫利条件,能量信号可以直接进行傅里叶变换,而功率信号不行。对于无法做傅里叶变换的信号,只能走一步弯路,先求自相关,再做傅里叶。但是物理意义上就是功率谱了。不过总之得到了信号的频率特性。

4.既然为什么随机信号的一次FFT没有意义却还能(傅立叶变换的平方)/(区间长度)得到功率谱?

对随机信号直接做FFT的做法其实就是截断成能量信号进行处理,这种处理不符合随机信号定义,但之所以这样做,是做短时频域分析下作的近似处理。(这里希望能有大神能给出更好的解释)

所以总结,频谱和能量谱(也叫能量谱密度)是傅里叶变换得到的复数结果和模平方的关系;
而功率谱(也就是功率谱密度)是针对随机信号分析提出的概念。

更多讨论可以参看:随机信号傅里叶变换和功率谱密度图给出的信息有什么不同 - MATLAB中文论坛

四、倒频谱

倒频谱(Cepstrum)也叫倒谱、二次谱和对数功率谱等。倒频谱的工程型定义是:信号功率谱对数值进行傅立叶逆变换的结果。(信号→求功率谱→求对数→求傅里叶逆变换)

为什么翻译作倒频谱呢?我个人的理解是,频谱(功率谱)反应的频率特征点横坐标是频率f(Hz),在倒频谱中对应的特征点的横坐标是时间t(s),而f与t互为倒数。从这里也可以看出,虽然倒频谱也叫“频谱”,其横坐标却并不是频率,而是时间。

那么倒频谱有什么好处呢?

“该分析方法方便提取、分析原频谱图上肉眼难以识别的周期性信号,能将原来频谱图上成族的边频带谱线简化为单根谱线,受传感器的测点位置及传输途径的影响小。”

这都是啥意思?一条条解释:

1.方便提取、分析原频谱图上肉眼难以识别的周期性信号

我们知道,频谱分析就是为了提取原始信号中的周期性信号的,怎么频谱中的信号还会有周期性?这就又涉及到两个概念:调制和边频带

调制分为幅值调制频率调制。下面以齿轮的幅值调制为例进行说明:齿轮的振动信号主要包括两部分,分别是齿轮啮合振动信号(高频)和齿轮轴的转频振动信号(低频),时域和频域曲线分别如下图所示:

高频信号和低频信号时域波形

高频信号和低频信号的频域波形

调制就是高低频率信号的混合。幅值调制从数学上看,相当于两个信号在时域上相乘;而在频域上,相当于两个信号的卷积。调制后的信号在时域和频域上分别变为:

调制后的时域信号

调制后的频域信号

我们发现,调制后的信号中,除原来的啮合频率分量外,增加了一对分量,它们是以高频信号特征频率为中心,对称分布于两侧,所以称为边频带

实际实验中齿轮啮合振动信号(高频)和齿轮轴的转频振动信号(低频)的特征频率可能是有多组的,其调制后的频域信号近似于一组频率间隔较大的脉冲函数和一组频率间隔较小的脉冲函数的卷积,从而在频谱上形成若干组围绕啮合频率及其倍频成分两侧的边频族,如下图:

边频带的形成

说了一大堆,终于回归到上边提到的问题:倒频谱“方便提取、分析原频谱图上肉眼难以识别的周期性信号”。这里指的周期性信号,就是重复出现的边频带。

倒频谱能较好地检测出功率谱上的周期成分,通常在功率谱上无法对边频的总体水平作出定量估计,而倒频谱对边频成分具有“概括”能力,能较明显地显示出功率谱上的周期成分,将原来谱上成族的边频带谱线简化为单根谱线,便于观察,而齿轮发生故障时的振动频谱具有的边频带一般都具有等间隔(故障频率)的结构,利用倒频谱这个优点,可以检测出功率谱中难以辨识的周期性信号。

2.受传感器的测点位置及传输途径的影响小

这是倒频谱的第二个好处。对于布置在不同位置的传感器,由于传递路径不同,其功率谱也不相同。但在倒频谱上,由于信号源的振动效应和传递途径的效应分离开来,代表齿轮振动特征的倒频率分量几乎完全相同,只是低倒频率段存在由于传递函数差异而产生的影响。在进行倒频谱分析时,可以不必考虑信号测取时的衰减和标定系数所带来的影响。这一优点对于故障识别极为有用。

关于倒频谱,文章 齿轮故障诊断常用信号分析处理方法 给出了具体了例子,方便理解。

五、小波分析

小波分析是一种时频域分析方法,该方法兼顾了信号在时域和频域的信息。知乎上有一篇文章对小波分析的理解进行了生动的讲解,强烈建议对小波分析概念不熟的同学先看一下。咚懂咚懂咚:能不能通俗的讲解下傅立叶分析和小波分析之间的关系?这篇文章中最后给出的小波变换的结果是这样的:

连续小波变换

看起来十分厉害,不过同时会发现两个问题:运算量很大;只有数值解,没有解析解。上述这种小波分析方法叫连续小波变换(continuous wavelet transform, CWT)。

为了减少变换运算量,去除不必要的重复的系数,实际中使用的通常是离散小波变换(discrete wavelet transform, DWT)。

这里的“离散”指的是什么呢?

让我们先回到小波基波(也叫母小波)的表达式:

其中s是尺度参数,表征频率;t是位移参数,表征时间。这部分在答友的连接里也提到了。再看上一张图,xy坐标分别是SCALE和TRANSLATION,也就是s和t,他们在连续小波变换中是连续的。

所以,在离散小波变换中,“离散”的就是参数s和t。此时小波表达式写为:

j和k都是整数,通常取s0=2,τ0=1。

可以看出,随着j取值的递增,我们可以得到一串不同的小波(子小波,也叫女儿小波...)。这些子小波的尺度参数以2的j次方的形式增长。当使用这一系列的子小波,对一个连续函数进行离散分析时,我们所获得的是一组小波分析的系数,这个分析过程称为小波系列分解

上边说道,尺度参数表征的是频率,在子小波中尺度参数以2的倍数增长(即小波的“长度”被“拉长”了2倍),那么子小波对应能检测到的频率值也会以1/2的倍数缩小。母小波所对应的频谱位于频率谱的高端,具有最大的频率谱范围- 而其他的子小波的频率谱则依次向频谱图的低频端移动,同时它们所覆盖的频率谱范围也相应地递减。在理想的情况下,所有的滤波器应该首尾相接互相覆盖。

不同尺度的子小波在小波频率谱上的覆盖

是的,每个子小波就相当于一个滤波器离散小波变换的过程就是逐级滤波的过程。

具体流程是怎样的呢?

用一句话描述就是:一组离散信号通过一系列的低通和高通滤波器,分别可以得到近似信号(用字母A表示)和细节信号(用字母D表示)。

用一张图描述就是:

LP为低通滤波器,HP为高通滤波器,B为带宽,2B为2倍带宽

用一个例子来描述就是:

对原始信号滤波:原始信号是在一个连续的低频正弦波信号(频率为0.5)上随机叠加了两个高频(频率为 10)高振幅的正弦脉冲,这里使用了 dB5(第五级Daubechies小波)作为去除噪音操作的母小波。

原始信号

一阶小波分解的结果为:

一阶小波分解的近似信号(低通结果)

一阶小波分解的细节信号(高通结果)

二阶小波分解的结果为(即对A1信号做分解):

二阶小波分解的近似信号(低通结果)

二阶小波分解的细节信号(高通结果)

三阶小波分解的结果为(即对A2信号做分解):

三阶小波分解的近似信号(低通结果)

三阶小波分解的细节信号(高通结果)

四阶小波分解的结果为(即对A3信号做分解):

四阶小波分解的近似信号(低通结果)

四阶小波分解的细节信号(高通结果)

至此我们已经能够得到较好的滤波结果了(即A5,不过脉冲信号也被滤掉了,用设置门限的方法可以保留住该信号,这里不做展开)。可以看到原式信号被逐级的,无遗漏地进行了高、低通滤波,且越接近低频分段越细,几乎想要哪个频段的特征都能得到,因而这个方法有个霸气的名字,叫滤波器银行。

小波变换大致讲完了,那么它有哪些特点,可以用来做什么呢?

首先当然是滤除噪声。

其次,由于离散小波变换是可逆的,所以还可以用来做图像、信号的无损压缩。

另外,可以检测信号的非连续性。奇异信号会在细节信号D中展现。

除此之外,还可以进行图像边界检测等工作。

(时)频域的一些常见的分析处理方法就介绍到这里了。这里能讲到的只是一些表面的概念和一些个人的理解。文中的内容还会不断修正和完善,对于不严谨以及谬误指出,还望多多指教。

欢迎关注我的公众号“括号的城堡”,微信号为“khscience”,会有更多有趣的东西分享。

参考:

Heinrich:如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧

随机信号傅里叶变换和功率谱密度图给出的信息有什么不同 - MATLAB中文论坛

傅里叶变换和逆变换公式的我理解意义 - CSDN博客

齿轮的振动机理

齿轮故障诊断常用信号分析处理方法

Cepstrum - Wikipedia

Wavelet - Wikipedia

周宇峰, 程景全. 小波变换及其应用[J]. 物理, 2008, 37(1):24-32.

matlab图像频谱分析代码_信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)...相关推荐

  1. 信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)

    信号的频域分析方法多种多样,这里针对较为常见的(频谱.能量谱.功率谱.倒频谱.小波分析)集中进行说明.这些方法的MATLAB代码实现参见文章频域特征值提取的MATLAB代码实现(频谱.功率谱.倒频谱) ...

  2. 频域分析方法的理解(信号、频谱、能量谱、功率谱、倒频谱、小波分析)(终极教程)

    信号频域分析方法的理解(频谱.能量谱.功率谱.倒频谱.小波分析) 参考文献,值得一读 https://blog.csdn.net/fengzhuqiaoqiu/article/details/1011 ...

  3. matlab 图像接缝_接缝雕刻算法似乎是无法调整图像大小的方法

    matlab 图像接缝 介绍(Introduction) In this article, we will be taking a deep dive into an interesting algo ...

  4. matlab腐蚀膨胀代码_(三十二)形态学----膨胀和腐蚀

    时间为友,记录点滴. 我们在<初始滤波之均值滤波>中有聊过滤波的本质,以及介绍了其中一种线性滤波(均值滤波).对于常见的非线性滤波"中值滤波"也在<视频的读取和处 ...

  5. matlab理想低通滤波器代码_自己动手,解开Matlab下AMD锐龙处理器性能封印

    性能除了需要花钱的硬件级提升方法外,还有系统管理,驱动以及应用优化等不花钱的方法.早年间硬件玩家们流行通过刷BIOS软改,覆盖驱动强行开启专属功能等各种魔改方式提升硬件性能.而对特定的应用进行优化的话 ...

  6. matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...

    本课主要分析了有限元的基本理论, 不同于其他学习资料的是本文从数学的角度重新阐述了有限元分析的基本步骤,如通解与特解的讲解,并以一个偏微分方程实例,从基础插值出发,详细地讲解了有限元数学推导的每一步过 ...

  7. pandas数据处理 代码_使用Pandas方法链接提高代码可读性

    pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...

  8. matlab畸变校正代码_关于OpenCV中的去畸变

    在opencv中,有关图像或像素点(角点)去畸变的函数有cv::undistort(),cv::getOptimalNewCameraMatrix(),cv::initUndistortRectify ...

  9. matlab数据归一化代码_深度学习amp;Matlab-LeNet实现图像分类

    明天准备用卷积神经网络处理分类问题,数据集大概有几万张图片,打算取其中的两类做一个简单分类.在这里先回顾一下以前在Matlab上利用LeNet对Mnist数据集做分类的代码. 本来是准备用Pytorc ...

  10. matlab低通滤波器库函数代码_利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波...

    本文使用的开发环境为:Win10 Matlab2018a 版本. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具. 按照下图调整FIR低通滤 ...

最新文章

  1. 65% 的钱被头部玩家拿走,人工智能要进入下半场?
  2. 如何直接从GitHub安装npm软件包?
  3. emeditor利用书签功能导出匹配结果到新文件
  4. java 线程 状态 图_Java线程中的生命周期和状态控制图文详解
  5. 安顺那里有学计算机,安顺计算机专业学费
  6. 登录用户Eclipse中SVN访问用户的变更办法
  7. java生成图片验证码
  8. 数据/方法论固然重要,但人为分析更有价值!
  9. abaqus模拟单向压缩实验
  10. harry potter
  11. 2022/03/03js作业第一个不同宽度变色第二个是输入几年几月几日判断是今年的第几天(不算闰年2月为28日)
  12. 计算机程序中的自省程序(反射程序)(introspective program)是什么?(introspectable、introspection)
  13. 学会给视频添加渐入、色彩变幻特效,简单几步骤做创意小视频
  14. Eeid—ligerUI学习(1)[首页布局]
  15. Modbus RTU转Modbus TCP模块,RS232/485转WiFi模块,WJ105
  16. 利用端口,进程,文件,服务和日志信息来排查系统安全
  17. 水样检测有哪些项目?水样检测的可测范围盘点
  18. 实验室云平台架构学习笔记
  19. TAG-9F10 发卡行相关数据(转)
  20. scpjsv3模组链接_我的世界scpv3下载-我的世界scpv3模组下载-4399J小游戏

热门文章

  1. inSSIDer 软件 WIFI信号强度测试
  2. jq22插件库视频播放插件Video.js,jq22资源分享
  3. 数学基础(1)线性代数总结
  4. LPDDR4的ZQ 校准
  5. 中科院信工所经验_2018信工所五室经验贴 - 中国科学院 - 王道论坛,专注于计算机考研的点点滴滴! - Powered by Discuz!...
  6. foreign 磁盘阵列_RAID组中的“Foreign”状态磁盘
  7. html怎么美化输入框,css 美化input输入框-美化按钮
  8. 九月手机无新事:头部品牌没创新,二三线品牌静悄悄
  9. Cpk (Process Capability Index)
  10. OpenCV安装使用