小波分解重构 V2.0 版程序存在的问题分析

本文分析了小波分解重构V2.0程序存在的问题,即重构后矩阵大小缩小。问题源于myidwt2()函数中错误的矩阵截取。通过研究Matlab自带函数,发现wavedec2()输出的s记录了各级分解矩阵大小,据此调整截取长度,成功修复问题。然而,作者预感到V3.0可能仍存在深层次问题,如矩阵大小的周期性变化和边界延拓等,这些问题有待后续探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先非常感谢研友 hh_milan ,7月7日和他讨论时提出了我这个小波分解重构程序存在一个挺大的问题:一个16*16的矩阵,用我的V2.0小波分解重构程序处理后,重构矩阵大小仅为9*9!当时我就判断出问题应该是出在重构程序的子函数 myidwt2() 中的 wkeep 那一行代码上,即用来将重构滤波卷积后的序列进行截取,使之与下一级的系数矩阵大小一致。做V2.0程序的时候,没仔细想,就简单地按 row-lnf+1 的长度截取了,而这样截取出来的矩阵大小是和下一级系数矩阵不一致的,所以在 myidwt2() 中的开头就有了这一段规范化的程序:

% 系数矩阵规范化,使各矩阵大小一致

[m,n]=size(rcA);

rcV=rcV(1:m,1:n);

rcH=rcH(1:m,1:n);

rcD=rcD(1:m,1:n);

这样处理的话,实际上,每重构一级,所得到的矩阵就会比原来同级的分解系数子矩阵要小若干行和列,从而就有了16*16的矩阵重构后只有9*9大小了。

着手解决这个问题的时候,一开始,我没什么头绪,就研究 Matlab 自带的小波函数程序代码,想从中看看 Matlab 是怎样处理这个问题的,然后按自己的理解编写修正程序。真是不看不知道,一看吓一跳,Matlab 为了解决这个重构问题,调用了十多个函数程序,主要包括waverec2,idwt2,dwtmode,dyadup,upsconv2,wextend,wconv2,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值