《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 188|回复: 1
收起左侧

[讨论] 请教:离散小波变换具体计算原理 [

[复制链接]
发表于 2020-3-20 15:38:23 | 显示全部楼层 |阅读模式
本帖最后由 zhh2100220115 于 2020-3-20 15:44 编辑

最近有做小波这块的或者对这块感兴趣的伙伴么 欢迎指教 先谢
看书上讲小波变换,如下图1,2:

做数字信号处理,用离散小波变换,或者说用二进,有一些问题不明白,请教大家:
1、很多文献中,一些常见的小波都能画出图形,比如db小波,我想问下,在MATLAB里面怎样画出任意存在小波的图形?小波应该是一个波形,每种小波其幅值、长度是固定的么?也就是,如果小波是一个函数,那么其定义域、值域是固定的?也就涉及到一个小波长度问题,那么每种小波,长度是多少?

2、书上讲db1小波,即Haar小波,一般都是按照幅度是1,序列长是1来画,但是这是连续的,如果离散变换,那么需要离散成什么样的呢?连续波形上,[0,1/2)幅值是1,[1/2,1)幅值是-1,离散时是否只取0 1/2 1三个点???那么,其他类型小波,又是怎样离散的??

3、小波和滤波器系数是什么关系呢?matlab有wfilters函数,将指定名称小波计算成其分解和重构的低通、高通滤波器(脉冲响应),其实我想知道是怎么算来的,或者小波(波形、序列),看起来也很像一个脉冲响应呢(最开始的时候我以为就是脉冲响应,因为看小波变换定义,就是将目标函数和小波函数直接做卷积(只不过小波序列没有左右翻转)!这不就相当于滤波器么?也就是将小波序列作为滤波器系数?)难道分解滤波器系数就是小波序列的拆分?但是我考查Haar小波,发现小波滤波器如图3,前两幅是分解滤波器系数,后两幅是重构。并且长度是2,而不是书上定义的Haar小波长度1?

4、就说到具体变换了,我们有信号(离散点),做离散小波变换,matlab直接调wavedec函数,我在想其算法是怎样的。帮助里介绍半子带滤波器思路,也就是,一直用分解滤波器滤(信号点和脉冲响应时间轴翻转做卷积),再1/2抽取。变换点数确实是对的上,比如信号M点,滤波器N点(N-1阶),则卷积是M+N-1点,1/2抽取,得(M-1)/2+N/2点。幅值上应该也不需要再乘以每层的因子了,因为帮助没说,不像小波变换数学公式每层尺度因子要变。下一层,继续将低频部分重复做上述滤波抽取......,到想要的层数即停止。我想问这就是离散二进小波变换快速算法么?那么实际上,小波变换和小波的波形没多大关系,主要是要得到小波滤波器系数了?是因为二进离散小波才这样吧,其他情况,计算时还是要根据原始定义来,也就是伸缩平移求内积,那么此时,小波每个尺度,点数是多少呢?比如信号1024点,采样率360Hz,sym8小波,怎么定尺度范围,也就是a取值,我取1:1:1024可以么?怎么计算出每层系数?因为此时我得不到这个小波离散序列啊

5、wavedec的系数,一直不理解。是否这些系数画成二维图,就可以看到和连续小波变换那种尺度-时间(点数)伪彩图呢?问题是每层系数不等,画二维图是不是需要扩宽插值到信号点数?但是这样一些系数少的层就很难看了,大片大片的方块。我看matlab中有cwt函数,其实也应该是离散变换吧(计算机不可能处理真正连续信号),还可以画那种类连续变换结果的二维图:
coefs = cwt(x,scales,'wname','plot')
我将wavedec得到的尺度矩阵输进去,比如10层二进是[1024 512 256 128 64 32 16 8 4 2 1 ],这里不太确定最后1要不要,得到图4:

看每个尺度图像并没有很多均等的颜色块,也就是每个块内颜色不是均匀的,这貌似不是扩宽插值,是做一些平滑来的?

6、最后一个,wavedec结果,怎么和频率对应起来,其实还是希望在图像上看,类似于将连续小波变换的二维图的尺度轴换成频率轴,那么是否是上面图4直接将纵轴换算成频率?那么是怎么换算的?360Hz对应1024尺度?512对应180尺度?......还是反过来,1024对应最小频率分辨率360Hz/1024?那么,只能得到这些离散频点上的幅值么?前面半子带滤波理论不是说每层对应一个频带么??之前我有一种理解是这样,每一层对应一个频带,那么将这个频带除以这一层的系数个数,是不是可以得到这个频带中每两个频点间隔,这样每层有系数个频点,每个频点幅值就是系数值???但是我完全不确定这种推理是不是对的!其实问题6可简单表述为,wavedec结果,怎么看信号时频分布?(因为我们用小波变换就是为了看时频分布,最好是看图像,而不是看系数(直接看系数很难看出啥规律吧),然后再确定怎么去噪、压缩等等(对系数进行处理))。

更多图片 小图 大图
组图打开中,请稍候......
 楼主| 发表于 2020-3-20 15:59:29 | 显示全部楼层
第5个问题,那个尺度矩阵,有可能应该是1./[1024 512 256 128 64 32 16 8 4 2 1 ]吧,如果尺度是指原小波变换定义公式中的a,则,分解过程应该由小尺度变到大尺度。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-7-12 00:56 , Processed in 0.046088 second(s), 10 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表