声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1405|回复: 2

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

[复制链接]
发表于 2007-5-2 18:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
原来的程序是这样的:
load leleccum;
x=leleccum(1:4000);
signal=x;
points=4000;        level=4;    sr=360;   num_inter=6;   wf='db3';
%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称
offset=0;
%____进行二进制小波变换(离散平稳小波变换),并给出各级波形:
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);
[swa,swd] = 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  ==> [swa,swd] = swt(signal,level,Lo_D,Hi_D);

我该如何改呢????请大家帮帮忙啊!!!

[ 本帖最后由 johnbenny 于 2007-5-2 18:06 编辑 ]
回复
分享到:

使用道具 举报

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

评分

1

查看全部评分

 楼主| 发表于 2007-5-3 13:06 | 显示全部楼层

回复 #2 songzy41 的帖子

谢谢你啊。。。。。。。。你太聪明了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-2 16:23 , Processed in 0.057171 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表