求助:用小波变换进行去噪
这是仿照课本写的程序=wavread('E:\心音信号\正常信号\正常信号',22000);
figure(1)
subplot(211)
plot(normal)
title('原信号')
=wavedec(normal,3,'db1');%一维多尺度小波分解(3层)
a3=appcoef(c,l,'db1',3);%提取一维近似系数(第3层)
d3=detcoef(c,l,3);%提取一维细节系数(第3层)
d2=detcoef(c,l,2);%提取一维细节系数(第2层)
d1=detcoef(c,l,1);%提取一维细节系数(第1层)
dd3=zeros(1,length(d3));
dd2=zeros(1,length(d2));
dd1=zeros(1,length(d1));
c1=;
s1=waverec(c1,l,'db1');%一维多尺度小波重构,返回原信号
subplot(212)
plot(s1)
title('强制消躁后信号')
=ddencmp('den','wv',normal);%用ddencmp函数获得信号的默认阈值
s2=wdencmp('gb1',normal,'db1',3,thr,sorh,keepapp);%用默认阈值对信号进行消噪处理
figure(2)
subplot(211)
plot(s2)
softd1=wthresh(normal,'s',0.2);%进行软阈值处理
softd2=wthresh(normal,'s',0.3);%进行软阈值处理
softd3=wthresh(normal,'s',0.4);%进行软阈值处理
c2=;
s3=waverec(c2,l,'db1');%一维多尺度小波重构,返回原信号
subplot(212)
plot(s3)
title('给定软阈值消噪后的信号')
运行时会出现错误:
Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.
Error in ==> C:\Documents and Settings\xiaobaitu\桌面\lianxi.m
On line 14==> c1=;
不明白是怎么回事。 小波去噪 可以参考下面的帖子:
http://forum.vibunion.com/forum/viewthread.php?tid=5351
另:建议文件一般存在英文文件夹下,或直接放在work下,命名也取字母较好.
Matlab一般不认中文的. 刚刚找到那些程序,今晚上好好看看
谢谢 没有仔细看你的程序,不过单纯就程序错误来看,你只需要做一下很小的修改即可
将
c1=;
修改为
c1=; 是这样改,可不知道为什么,我先看看课本再说吧
从基础做起 很显然,你读入的数据应该是列向量
那么最后你得到的a3也是列向量
而你通过zero形成的向量均为行向量,所以出现这样的错误 明白了
页:
[1]