形象易懂讲解算法I——小波变换

https://zhuanlan.zhihu.com/p/22450818?refer=dong5

 

最早发于回答:能不能通俗的讲解下傅立叶分析和小波分析之间的关系? - 咚懂咚懂咚的回答
现收入专栏。


从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。

下面我就按照傅里叶-->短时傅里叶变换-->小波变换的顺序,讲一下为什么会出现小波这个东西、小波究竟是怎样的思路。(反正题主要求的是通俗形象,没说简短,希望不会太长不看。。)

一、傅里叶变换
关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在正处在理解了傅里叶但还没理解小波的道路上。(在第三节小波变换的地方我会再形象地讲一下傅里叶变换)

下面我们主要将傅里叶变换的不足。即我们知道傅里叶变化可以分析信号的频谱,那么为什么还要提出小波变换?答案就是方沁园所说的,“对非平稳过程,傅里叶变换有局限性”。看如下一个简单的信号:做完FFT(快速傅里叶变换)后,可以在频谱上看到清晰的四条线,信号包含四个频率成分。

一切没有问题。但是,如果是频率随着时间变化的非平稳信号呢?

如上图,最上边的是频率始终不变的平稳信号。而下边两个则是频率随着时间改变的非平稳信号,它们同样包含和最上信号相同频率的四个成分。
做FFT后,我们发现这三个时域上有巨大差异的信号,频谱(幅值谱)却非常一致。尤其是下边两个非平稳信号,我们从频谱上无法区分它们,因为它们包含的四个频率的信号的成分确实是一样的,只是出现的先后顺序不同。

可见,傅里叶变换处理非平稳信号有天生缺陷。它只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。因此时域相差很大的两个信号,可能频谱图一样。

然而平稳信号大多是人为制造出来的,自然界的大量信号几乎都是非平稳的,所以在比如生物医学信号分析等领域的论文中,基本看不到单纯傅里叶变换这样naive的方法。
上图所示的是一个正常人的事件相关电位。对于这样的非平稳信号,只知道包含哪些频率成分是不够的,我们还想知道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析。


二、短时傅里叶变换(Short-time Fourier Transform, STFT)
一个简单可行的方法就是——加窗。我又要套用方沁园同学的描述了,“把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率了。”这就是短时傅里叶变换。
看图:
时域上分成一段一段做FFT,不就知道频率成分随着时间的变化情况了吗!
用这样的方法,可以得到一个信号的时频图了:
——此图像来源于“THE WAVELET TUTORIAL”
图上既能看到10Hz, 25 Hz, 50 Hz, 100 Hz四个频域成分,还能看到出现的时间。两排峰是对称的,所以大家只用看一排就行了。

是不是棒棒的?时频分析结果到手。但是STFT依然有缺陷。

使用STFT存在一个问题,我们应该用多宽的窗函数?
窗太宽太窄都有问题:
窗太窄,窗内的信号太短,会导致频率分析不够精准,频率分辨率差。窗太宽,时域上又不够精细,时间分辨率低。
(这里插一句,这个道理可以用海森堡不确定性原理来解释。类似于我们不能同时获取一个粒子的动量和位置,我们也不能同时获取信号绝对精准的时刻和频率。这也是一对不可兼得的矛盾体。我们不知道在某个瞬间哪个频率分量存在,我们知道的只能是在一个时间段内某个频带的分量存在。 所以绝对意义的瞬时频率是不存在的。)

看看实例效果吧:
——此图像来源于“THE WAVELET TUTORIAL”
上图对同一个信号(4个频率成分)采用不同宽度的窗做STFT,结果如右图。用窄窗,时频图在时间轴上分辨率很高,几个峰基本成矩形,而用宽窗则变成了绵延的矮山。但是频率轴上,窄窗明显不如下边两个宽窗精确。

所以窄窗口时间分辨率高、频率分辨率低,宽窗口时间分辨率低、频率分辨率高。对于时变的非稳态信号,高频适合小窗口,低频适合大窗口。然而STFT的窗口是固定的,在一次STFT中宽度不会变化,所以STFT还是无法满足非稳态信号变化的频率的需求。


三、小波变换

那么你可能会想到,让窗口大小变起来,多做几次STFT不就可以了吗?!没错,小波变换就有着这样的思路。
但事实上小波并不是这么做的(关于这一点,方沁园同学的表述“小波变换就是根据算法,加不等长的窗,对每一小部分进行傅里叶变换”就不准确了。小波变换并没有采用窗的思想,更没有做傅里叶变换。)
至于为什么不采用可变窗的STFT呢,我认为是因为这样做冗余会太严重,STFT做不到正交化,这也是它的一大缺陷。

于是小波变换的出发点和STFT还是不同的。STFT是给信号加窗,分段做FFT;而小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了~

【解释】
来我们再回顾一下傅里叶变换吧,没弄清傅里叶变换为什么能得到信号各个频率成分的同学也可以再借我的图理解一下。
傅里叶变换把无限长的三角函数作为基函数:

这个基函数会伸缩、会平移(其实本质并非平移,而是两个正交基的分解)。缩得窄,对应高频;伸得宽,对应低频。然后这个基函数不断和信号做相乘。某一个尺度(宽窄)下乘出来的结果,就可以理解成信号所包含的当前尺度对应频率成分有多少。于是,基函数会在某些尺度下,与信号相乘得到一个很大的值,因为此时二者有一种重合关系。那么我们就知道信号包含该频率的成分的多少。

仔细体会可以发现,这一步其实是在计算信号和三角函数的相关性。

看,这两种尺度能乘出一个大的值(相关度高),所以信号包含较多的这两个频率成分,在频谱上这两个频率会出现两个峰。


以上,就是粗浅意义上傅里叶变换的原理。




如前边所说,小波做的改变就在于,将无限长的三角函数基换成了有限长的会衰减的小波基。
这就是为什么它叫“小波”,因为是很小的一个波嘛~


从公式可以看出,不同于傅里叶变换,变量只有频率ω,小波变换有两个变量:尺度a(scale)和平移量 τ(translation)。尺度a控制小波函数的伸缩,平移量 τ控制小波函数的平移。尺度就对应于频率(反比),平移量 τ就对应于时间。



当伸缩、平移到这么一种重合情况时,也会相乘得到一个大的值。这时候和傅里叶变换不同的是,这不仅可以知道信号有这样频率的成分,而且知道它在时域上存在的具体位置。

而当我们在每个尺度下都平移着和信号乘过一遍后,我们就知道信号在每个位置都包含哪些频率成分。

看到了吗?有了小波,我们从此再也不害怕非稳定信号啦!从此可以做时频分析啦!

做傅里叶变换只能得到一个频谱,做小波变换却可以得到一个时频谱!
↑:时域信号
↑:傅里叶变换结果

——此图像来源于“THE WAVELET TUTORIAL”
↑:小波变换结果

小波还有一些好处,比如,我们知道对于突变信号,傅里叶变换存在吉布斯效应,我们用无限长的三角函数怎么也拟合不好突变信号:
然而衰减的小波就不一样了:




以上,就是小波的意义。

-----------------------------------------------------------------------------------------------------------

以上只是用形象地给大家展示了一下小波的思想,希望能对大家的入门带来一些帮助。毕竟如果对小波一无所知,直接去看那些堆砌公式、照搬论文语言的教材,一定会痛苦不堪。
在这里推荐几篇入门读物,都是以感性介绍为主,易懂但并不深入,对大家初步理解小波会很有帮助。文中有的思路和图也选自于其中:
1. THE WAVELET TUTORIAL (强烈推荐,点击链接:INDEX TO SERIES OF TUTORIALS TO WAVELET TRANSFORM BY ROBI POLIKAR)
2. WAVELETS:SEEING THE FOREST AND THE TREES
3. A Really Friendly Guide to Wavelets
4. Conceptual wavelets

但是真正理解透小波变换,这些还差得很远。比如你至少还要知道有一个“尺度函数”的存在,它是构造“小波函数”的关键,并且是它和小波函数一起才构成了小波多分辨率分析,理解了它才有可能利用小波做一些数字信号处理;你还要理解离散小波变换、正交小波变换、二维小波变换、小波包……这些内容国内教材上讲得也很糟糕,大家就一点一点啃吧~











-------------------------------------------------------------------------------------------------------------------------
一些问题的回答:
1. 关于海森堡不确定性原理
不确定性原理,或者叫测不准原理,最早出自量子力学,意为在微观世界,粒子的位置与动量不可同时被确定。但是这个原理并不局限于量子力学,有很多物理量都有这样的特征,比如能量和时间、角动量和角度。体现在信号领域就是时域和频域。不过更准确一点的表述应该是:一个信号不能在时空域和频域上同时过于集中;一个函数时域越“窄”,它经傅里叶变换的频域后就越“宽”。
如果有兴趣深入研究一下的话,这个原理其实非常耐人寻味。信号处理中的一些新理论在根本上也和它有所相连,比如压缩感知。如果你剥开它复杂的数学描述,最后会发现它在本质上能实现其实和不确定性原理密切相关。而且大家不觉得这样一些矛盾的东西在哲学意义上也很奇妙吗?


2. 关于正交化
什么是正交化?为什么说小波能实现正交化是优势?
简单说,如果采用正交基,变换域系数会没有冗余信息,变换前后的信号能量相等,等于是用最少的数据表达最大的信息量,利于数值压缩等领域。JPEG2000压缩就是用正交小波变换。
比如典型的正交基:二维笛卡尔坐标系的(1,0)、(0,1),用它们表达一个信号显然非常高效,计算简单。而如果用三个互成120°的向量表达,则会有信息冗余,有重复表达。
但是并不意味着正交一定优于不正交。比如如果是做图像增强,有时候反而希望能有一些冗余信息,更利于对噪声的抑制和对某些特征的增强。

3. 关于瞬时频率
  原问题:图中时刻点对应一频率值,一个时刻点只有一个信号值,又怎么能得到他的频率呢?
  很好的问题。如文中所说,绝对意义的瞬时频率其实是不存在的。单看一个时刻点的一个信号值,当然得不到它的频率。我们只不过是用很短的一段信号的频率作为该时刻的频率,所以我们得到的只是时间分辨率有限的近似分析结果。这一想法在STFT上体现得很明显。小波用衰减的基函数去测定信号的瞬时频率,思想也类似。(不过到了Hilbert变换,思路就不一样了,以后有机会细讲)

4. 关于小波变换的不足
这要看和谁比了。
A.作为图像处理方法,和多尺度几何分析方法(超小波)比:
对于图像这种二维信号的话,二维小波变换只能沿2个方向进行,对图像中点的信息表达还可以,但是对线就比较差。而图像中最重要的信息恰是那些边缘线,这时候ridgelet(脊波), curvelet(曲波)等多尺度几何分析方法就更有优势了。
B. 作为时频分析方法,和希尔伯特-黄变换(HHT)比:
相比于HHT等时频分析方法,小波依然没脱离海森堡测不准原理的束缚,某种尺度下,不能在时间和频率上同时具有很高的精度;以及小波是非适应性的,基函数选定了就不改了。

5. 关于文中表述的严谨性
评论中有不少朋友提到,我的一些表述不够精准。这是肯定的,并且我也是知道的。比如傅里叶变换的理解部分,我所说的那种“乘出一个大的值”的表述肯定是不够严谨的。具体我也在评论的回答中做了解释。我想说的是通俗易懂和精确严谨实在难以兼得,如果要追求严谨,最好的就是教科书上的数学表达,它们无懈可击,但是对于初学者来说,恐怕存在门槛。如果要通俗解释,必然只能侧重一个关键点,而出现漏洞。我想这也是教科书从来不把这些通俗解释写出来的原因吧——作者们不是不懂,而是怕写错。所以想深入理解傅里叶变换和小波变换的朋友还请认真学习教材,如果这篇文章能给一些初学者一点点帮助,我就心满意足了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Linux命令行归档文件

存档文件 (Archiving Files) As we already understand what Compression (Compression techniques in Linux) is? We shall learn about Archives. We prefer compression as it is convenient to send file compressed through a network but sometimes it is not a smart w…

http缓存机制之304状态码

在网上看到一篇关于解释浏览器缓存更新机制304状态码的文章,里面说如果请求头中的If-Modified-Since字段和If-None-Match字段的值分别和响应头中的Last-Modified字段和Etag字段值一致,服务器就会返回304状态码(无响应体),浏览器就从本地读取缓…

计算机选配 注意事项,选择鼠标注意事项有哪些

选择鼠标注意事项有哪些每台电脑旁边都有了一个忠实的伴侣,那就是“Mouse”--鼠标。选择鼠标最重要的一点就是质量,无论它的功能有多强大、外形多漂亮,如果质量不好那么一切都不用考虑了。那么,选择鼠标注意事项有哪些?笔记本鼠标…

js 验证护照_护照本地策略第2部分| Node.js

js 验证护照In my last article (Passport local strategy section 1 | Node.js), we started the implementation of the passport-local authentication strategy. We also looked at the various requirements to get started with the login form. In this article, we wil…

svn版利用什么技术实现_金葱粉涂料印花利用了什么技术?

金葱粉涂料印花利用了什么技术:金葱粉用涂料而不是用染料来生产印花布已经非常广泛,以致开始把它当作一种独立的印花方式。涂料印花是用涂料直接印花,该工艺通常叫做干法印花,以区别于湿法印花(或染料印花)。通过比较同一块织物上印花部位和未…

网站换服务器需要注意什么问题,网站更换服务器要注意哪些事项

原标题:网站更换服务器要注意哪些事项网站在运营的过程中,出于某种考虑,我们会将网站进行服务器的变更,那么在进行服务器变成过程中,需要注意哪些事项。一、如果是跨服务商更换网站服务器,需要做备案迁移。…

kafka分区与分组原理_大数据技术-Kafka入门

在大数据学习当中,主要的学习重点就是大数据技术框架,针对于大数据处理的不同环节,需要不同的技术框架来解决问题。以Kafka来说,主要就是针对于实时消息处理,在大数据平台当中的应用也很广泛。大数据学习一般都有哪些内…

ActiveReports 报表控件官方中文新手教程 (1)-安装、激活以及产品资源

本系列文章主要是面向初次接触 ActiveReports 产品的用户,能够帮助您在三天之内轻松的掌握ActiveReports控件的基本用法,包含安装、激活、创建报表、绑定数据源以及公布等内容。本篇文章我们就从安装产品開始带您开启轻松的 Ac…

如何在React Native中使用React JS Hooks?

In my articles, Im going to be using either expo or snack online IDE and android emulator. 在我的文章中,我将使用expo或点心在线IDE和android模拟器。 React Hooks is simply an awesome tool that helps us use states and other react features without w…

华为P40pro 手机云台_2020年目前拍照最好的手机推荐!华为P40 Pro!DXO全球榜首

目前最热门的拍照手机自然是华为P40 Pro,其相机性能直接问鼎DXOMARK手机相机评分榜首。对于拍照要极求高的用户,华为P40 Pro将是一个非常不错的选择。那么,华为P40 Pro除了出色的相机之外,其它方面表现如何呢?下面&…

Centos 7安装与配置nagios监控(一)

目 录序言(必备知识)一、安装规划1.1系统环境1.2所需软件包二、配置安装环境2.1同步时间2.2禁用SElinux2.3 xftp上传软件包2.4安装邮件服务三、监控主机安装3.1安装nagios的运行环境3.2增加用户3.3安装nagios3.4配置权限3.5安装插件3.6安装nrpe四、远程主机安装4.1配置运行环境…

备份linux系统报错_Linux 系统如何快速入门?分享民工哥总结的经验

大家好,我是民工哥。认识或熟悉我的人都知道,是做运维出身的,所以,很多时候,有很多朋友喜欢问我一些有关运维的问题,比如:我应该如何入门Linux系统运维?Linux系统运维到底需要学哪些…

pe联想服务器装系统教程视频,演示联想电脑u盘重装系统xp教程

联想电脑U盘重装XP系统的方法很多朋友询问,其实现在很多电脑已经不支持XP系统的安装了,如果你的联想电脑是近几年购买的,还是安装win10系统比较保险。当然联想电脑安装系统过程中遇到问题也可以联系人工客服。联想电脑如何使用U盘重装系统XP呢…

springboot公共模块打包_解决SpringBoot多模块发布时99%的问题?

每天都会分享Java架构文章,喜欢的朋友关注我。ps:文末有彩蛋,惊喜等着你如果使用的是 SpringBoot 多模块的项目,在发布的时候可能遇到各种各样的问题。本文归纳了以下 8 个原则和发布时经常出现的 4 个问题的解决方案,…

定义整型数组_C++数组的定义与初始化(学习笔记:第6章 01)

数组的定义与使用[1]数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。数组的定义方括号里面列出的常量表达式是数组每一维的下标个数。数组的下标不管从哪一维它都是从0开始数的。例如:int a[10]; 表示a为整型数组&a…

我们正在经历一个应用疲惫时代?

在移动互联网时代到来之后,应用程序成为了智能手机必备,也正因为万千开发者的参与,才让移动终端充分发挥出了强大的能量,当然,这些开发者也不断创造着造富神话,一个小团队在几个月的努力之后可能就会成为亿…

语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接

从一线收集了两百个文件,要整合到一起?总部一张全国两百个城市的汇总表,拆成两百个小文件?开什么玩笑,难道要复制粘贴到天荒地老。。。不用这么麻烦,一个循环,一个语句,实现快速表拆…

Anaconda配置多spyder多python环境

作者:桂。 时间:2017-04-17 22:02:37 链接:http://www.cnblogs.com/xingshansi/p/6725298.html 前言 最近在看《统计学习方法》,打算配合《机器学习实战》一起,可后者的代码是基于python2.6的: All the co…

C++——智能指针和RAII

该文章代码均在gitee中开源 C智能指针hpphttps://gitee.com/Ehundred/cpp-knowledge-points/tree/master/%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88​​​​​​​ 智能指针 传统指针的问题 在C自定义类型中,我们为了避免内存泄漏,会采用析构函数的方法释…

移除元素所有事件监听_DOM 事件模型或 DOM 事件机制

DOM 事件模型DOM 的事件操作(监听和触发),都定义在EventTarget接口。所有节点对象都部署了这个接口,其他一些需要事件通信的浏览器内置对象(比如,XMLHttpRequest、AudioNode、AudioContext)也部…