Ericwjc 发表于 2012-4-6 21:19

离散小波变换中卷积计算过程的疑问 wconv1 conv2

以前使用离散小波变换时,都是直接使用matlab中的wavedec函数,没有具体去看细节,今天突然看了一下,发现了一些问题,想和大家交流:
(1)书上一般都说,原始长度为N的数据,经过低通滤波器(长度为L,卷积),再下(2)采样后,数据长度为原始数据的一半(N/2)。但是,如果从数学上说,长度为N的序列与长度为L的序列卷积后,结果为长底N+L-1的序列,再经下采样的话岂不是有问题?它在卷积滤波的过程中经过了怎样的处理呢?理论依据是什么呢?
(2)打开离散小波变换的wavedec函数,其中调用了一层小波分解函数dwt,再打开dwt,其中部分内容为:
---------------------------------------------------------------
y = wextend('1D',dwtEXTM,x,lenEXT);
% Compute coefficients of approximation.
z = wconv1(y,Lo_D,'valid');
a = z(first:2:last);                  %这应该就是结合了下采样
% Compute coefficients of detail.
z = wconv1(y,Hi_D,'valid');
d = z(first:2:last);
--------------------------------------------------------------
从中可以看出,它对输入进行了扩展——wextend,扩展的理论依据是什么呢?貌似目前都没有书籍对此进行说明。
另外,上面的卷积计算用的是函数wconv1,于是打开wconv1,其中部分内容为:
---------------------------------------------------------------
function y = wconv1(x,f,shape)
y = conv2(x(:)',f(:)',shape);
if size(x,1)>1
    y = y';
--------------------------------------------------------------
可以看出,其卷积计算用的是conv2函数,这是一个计算二维卷积的函数,这里为什么用它呢?一般的输入和滤波器系数的卷积是一维的吧,为什么不用conv呢?
对conv2的解释:
C=conv2(A,B,shape)
当shape为valid时,返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=

(3)奇怪的是,我在matlab安装目录下搜索conv2函数时,发现搜索到了不少的结果,而且许多M文件里都没有计算过程code。

写的有点长,还望大侠老师耐心阅读和回复,同时也欢迎和大家交流,非常感谢。

mingmingtree 发表于 2012-4-9 10:19

我最近也字学小波。抱着学习的心态读完了LZ的分享。
别的我不太懂,关于wextend,这应该是小波工具箱用于信号延拓的唯一一个函数吧。功能是延拓向量或者矩阵,不仅可以延拓一维信号,还可以延拓二维图像。语法格式是Y=wextend(TYPE,MODE,X,L,LOC)或者Y=wextend(TYPE,MODE,X,L),后面这种表示默认LOC='b',也就是要进行双边延拓的意思。你那个程序
y = wextend('1D',dwtEXTM,x,lenEXT);
‘1D'’表示延拓类型是一维延拓;dwtEXTM应该是延拓模式(有补零,平滑,对称,周期延拓模式等,但我没看到dwtEXTM这个表达符号的),X就是原信号,lenEXT应该是表示延拓长度(书上是直接用L表示,我也没看到lenEXT这个表达符号的),不知道能不能帮到你。希望有高手来解答,那样读着才会进步。嘻嘻~
祝你好运,谢谢分享!

Ericwjc 发表于 2012-5-31 10:57

回复 2 # mingmingtree 的帖子

原来是你呀。现在明白wextend就是一个边界处理过程。

mingmingtree 发表于 2012-6-1 09:14

回复 3 # Ericwjc 的帖子

啊,好久没来了,原来是你啊!{:{23}:}
节日快乐!!{:{40}:}

563524748 发表于 2015-7-7 20:36

wextend就是信号延拓的函数,有好几种形式,帮助文件里有。请问楼主有没有研究过小波包分解函数的细节呢?
页: [1]
查看完整版本: 离散小波变换中卷积计算过程的疑问 wconv1 conv2