如何理解小波变换
1、小波函数和小波变换之间的关系?
和傅里叶变换类似。在FFT中,一个信号由无数个sin和cos构成。
那么在小波变换变换中,一个信号由无数个小波基函数构成。
常见的小波基函数有哪些?
2、小波变换中的两个基本概念,scale和shift
短时傅里叶变换(STFT)存在的问题:STFT做不到正交化
那么为什么要正交呢?我们知道sin函数和cos函数是正交的,STFT的正交性该如何理解?
可以这样理解:
做FFT实际上是用不同的cos函数(cos(wt),cos(2wt),cos(3wt),...,cos(nwt))跟原始信号做卷积(从原始信号中摘取cos(wt)成分,...)。
如果原始信号包含了cos(wt)分量,则卷积后的结果不为0,那么可以认为原始信号中有cos(wt)分量,依次类推,将整个频率都试一遍。完成频谱分析图。可见这样做的计算量非常大,但不管如何,FFT是可以进行的。
而小波变化最核心的一点是,将sin和cos基换成了小波基。
如下是一个小波基的数学表达式:
其中τ代表了shift
a代表了scale。
计算小波频谱的方法跟傅里叶类似。由于小波和cos不一样,它有限长,而且其他时刻基本上衰减到0附近,因此可以保留时间信息。
3、小波变换后的结果中
a和b分别代表什么?
如何理解matlab中的小波变换的结果。
理解小波系数:
https://zhidao.baidu.com/question/1382947695099319860.html
那么是不是说,在matlab中,不同level对应不同scale的小波基。
https://wenku.baidu.com/view/01b5d51074c66137ee06eff9aef8941ea76e4b34.html
https://www.ilovematlab.cn/thread-301735-1-1.html
d1,d2,到dn,再到an是怎么来的呢?
https://www.ilovematlab.cn/forum.php?mod=viewthread&tid=190384
(1)小波系数可以理解为小波与信号的相似程度;(2)图中的a,d表示分解后的系数。
a是垂直方向的系数 d是对角方向的系数
后来我研究了下发现,小波GUI里面的a3,d3,d2,d1 是已经经过重构了的信号,也就是说说信号用wavemenu工具箱分析,即被分解了又被重构了,a3,d3,d2,d1不是单纯的小波系数
感慨:2017年之后,都去搞深度学习了。想小波这么厉害的工具,已经无人问津了。可怜。
总结:a3,d3,d2,d1 是已经经过重构了的信号。使用相应的小波系数,进行重构后的信号。
强烈推荐↓
请看这个https://www.mathworks.com/help/wavelet/gs/interpreting-continuous-wavelet-coefficients.html
最后,奉上可以直接跑的小波变换code
CWTcoeffs = cwt(x,1:180,'sym4');%获取小波系数;sym4是一种类似正弦波的小波,还有haar小波。db4小波
imagesc(t,1:180,abs(CWTcoeffs)); %小波系数的可视化。不同的行代表不同的频率,也就是scale。横坐标是时间
colormap jet; axis xy;
xlabel('t'); ylabel('Scales');
附录:
岔开这个话题,我问一下:第一,cos(wt)和cos(2wt)做卷积,为0 吗?换句话说,cos(wt),cos(2wt)正交吗?第二,cos(nwt)和sin(pwt)[n不等于p]正交吗?
答案都是正交的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?