johnbenny 发表于 2007-5-2 18:03

为什么改了信号的长度就出现问题了呢??

原来的程序是这样的:
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 编辑 ]

songzy41 发表于 2007-5-3 11:53

在调用swt时要满足以下条件:如过要进行第K层分解,则信号长度要被2的K次幂整除,否则便会产生错误。若把程序改成:
x=leleccum(2200:3607);
points=1408;
程序就能运行了。

johnbenny 发表于 2007-5-3 13:06

回复 #2 songzy41 的帖子

谢谢你啊。。。。。。。。你太聪明了
页: [1]
查看完整版本: 为什么改了信号的长度就出现问题了呢??