沙漠td报点:有关matlab语句出错信息?

来源:百度文库 编辑:高考问答 时间:2024/05/06 00:40:34
wfilter = 'db1';

[ca1,cd1] = dwt(x, wfilter);
[ca2,cd2] = dwt(ca1, wfilter);
[ca3,cd3] = dwt(ca2, wfilter);
[ca4,cd4] = dwt(ca3, wfilter);

%The following 4 sentences, you can try to use one or more.
cd4=zeros(size(cd4));
cd3=zeros(size(cd3));
% cd2=zeros(size(cd2));
% cd1=zeros(size(cd1));

inv_ca3 = idwt(ca4,cd4, wfilter);
inv_ca2 = idwt(inv_ca3,cd3, wfilter);
inv_ca1 = idwt(inv_ca2,cd2, wfilter);
result = idwt(inv_ca1,cd1, wfilter);

plot(result);

把wfilter = 'db1'中的db1替换成db4时,再运行matlab提示如下错误信息:
??? Error using ==> +
Matrix dimensions must agree.

Error in ==> D:\MATLAB6p5\toolbox\wavelet\wavelet\idwt.m
On line 76 ==> x = upsaconv('1D',a,Lo_R,lx,dwtATTR)+ ... % Approximation.

Error in ==> D:\MATLAB6p5\work\baidu_beijing_wavelet.m
On line 275 ==> inv_ca1 = idwt(inv_ca2,cd2, wfilter);

这是哪个地方出错了?怎么修正?谢谢!

昨天告诉过你了,在于dwt时需要对信号做延拓,而且分解中的下采样之后的信号不一定是原来信号长度的一半。所以db1小波基可以。

不过希望高手能写个对一维信号的通用程序出来。