首先非常感谢研友 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大小了。
着手解决这个问题的时候,一开始,我没什么头绪,就研究