马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
以前使用离散小波变换时,都是直接使用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)=[Ma-Mb+1,Na-Nb+1]
(3)奇怪的是,我在matlab安装目录下搜索conv2函数时,发现搜索到了不少的结果,而且许多M文件里都没有计算过程code。
写的有点长,还望大侠老师耐心阅读和回复,同时也欢迎和大家交流,非常感谢。 |