请高手帮忙看一下这个小波去噪程序
附件中有本人上传的原始数据。我想把信号中的低频成分滤掉,想保留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行,程序中已标出。
请高手帮忙,错在哪里了。
补充一下降噪方法:
进行四层小波分解后,把第四层低频信号置零,然后重构信号,结果重构时出错。 在下语句中caa4,cd4,cd3,cd2和cd1都是列数据:
cl=
所以造成错误,改为
cl=
就可执行了。
songzy41 ,谢谢!
原来是这个问题,非常感谢songzy41 !
你也用小波作东西吗?
有没有联系方式,请多多指教。 我用小波不算很熟练,但在论坛上有不少搞小波的高手,有问题可拿到论坛上一起讨论。 楼主为什么要进行单支重构?感觉没什么需要啊!
回复 板凳 songzy41 的帖子
在下语句中caa4,cd4,cd3,cd2和cd1都是列数据:cl=
所以造成错误,改为
cl=
就可执行了。
改了运行还是有问题,画不出figure(2)
请指导,谢谢。 回复 6 # wangzemin 的帖子
可以啊,我这里能运行,贴不上图 学习一下
页:
[1]