为什么改了信号的长度就出现问题了呢??
原来的程序是这样的:load leleccum;
x=leleccum(1:4000);
signal=x;
points=4000; level=4; sr=360; num_inter=6; wf='db3';
%所处理数据的长度 分解的级数 抽样率 迭代次数 小波名称
offset=0;
%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:
=wfilters(wf);
= swt(signal,level,Lo_D,Hi_D);
figure;
subplot(level,1,1); plot(real(signal)); grid on;axis tight;
for i=1:level
subplot(level+1,2,2*(i)+1);
plot(swa(i,:)); axis tight;grid on;xlabel('time');
ylabel(strcat('a ',num2str(i)));
subplot(level+1,2,2*(i)+2);
plot(swd(i,:)); axis tight;grid on;
ylabel(strcat('d ',num2str(i)));
end
我就改了:x=leleccum(2200:3600);
points=1400;
然后就出现: ??? Error using ==> swt
Too many output arguments.
Error in ==> C:\Documents and Settings\Administrator\桌面\dian\Denoise_w_Mod_sim_1.m
On line 19==> = swt(signal,level,Lo_D,Hi_D);
我该如何改呢????请大家帮帮忙啊!!!
[ 本帖最后由 johnbenny 于 2007-5-2 18:06 编辑 ] 在调用swt时要满足以下条件:如过要进行第K层分解,则信号长度要被2的K次幂整除,否则便会产生错误。若把程序改成:
x=leleccum(2200:3607);
points=1408;
程序就能运行了。
回复 #2 songzy41 的帖子
谢谢你啊。。。。。。。。你太聪明了
页:
[1]