liutian 发表于 2007-8-17 12:07

请高手帮忙看一下这个小波去噪程序

附件中有本人上传的原始数据。
我想把信号中的低频成分滤掉,想保留30K-150K之间的信号,采样频率为500K。打算用小波去噪,进行四层分解后,把第四层低频信号置零,重构信号,所编程序如下,但是老是报错,请高手指教。
%载入信号,画出波形

clear all
clc;
load('c:\temp\1.txt');
s1=X1;

fs=500000;%采样频率
t=1:max(size(s1));
t=1000*t./fs;
t=t';
plot(s1),title('plot(s1)'),grid on;
%axis();
xlabel('时间(t)   单位:ms');
ylabel('电压(V)');
title('原始信号');

%小波分解
=wavedec(s1,4,'db4');
=detcoef(c,l,);
ca4=appcoef(c,l,'db4',4);
a4=wrcoef('a',c,l,'db4',4);
d4=wrcoef('d',c,l,'db4',4);
d3=wrcoef('d',c,l,'db4',3);
d2=wrcoef('d',c,l,'db4',2);
d1=wrcoef('d',c,l,'db4',1);
%不需要的系数置零
caa4=zeros(size(ca4));

%消噪后信号重构,并画图
cl=;    %程序 运行时,此处出错。
s2=waverec(cl,l,'db4');
figure(2);
plot(t,s2);title('消噪后重构信号');grid on;


报错信息为:

??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.

Error in ==> p1 at 49
cl=

错误就在程序的倒数第4行,程序中已标出。
请高手帮忙,错在哪里了。

补充一下降噪方法:
       进行四层小波分解后,把第四层低频信号置零,然后重构信号,结果重构时出错。

songzy41 发表于 2007-8-17 14:43

在下语句中caa4,cd4,cd3,cd2和cd1都是列数据:
cl=
所以造成错误,改为
cl=
就可执行了。

liutian 发表于 2007-8-17 15:03

songzy41 ,谢谢!

原来是这个问题,
非常感谢songzy41 !
你也用小波作东西吗?
有没有联系方式,请多多指教。

songzy41 发表于 2007-8-17 18:39

我用小波不算很熟练,但在论坛上有不少搞小波的高手,有问题可拿到论坛上一起讨论。

han_xiao_1985 发表于 2009-8-1 10:33

楼主为什么要进行单支重构?感觉没什么需要啊!

wangzemin 发表于 2009-8-2 17:24

回复 板凳 songzy41 的帖子

在下语句中caa4,cd4,cd3,cd2和cd1都是列数据:
cl=
所以造成错误,改为
cl=
就可执行了。

改了运行还是有问题,画不出figure(2)
请指导,谢谢。

jameslan 发表于 2011-12-29 21:52

回复 6 # wangzemin 的帖子

可以啊,我这里能运行,贴不上图

malan018 发表于 2012-7-18 09:54

学习一下
页: [1]
查看完整版本: 请高手帮忙看一下这个小波去噪程序