xxf 发表于 2006-11-27 15:17

求助:用小波变换进行去噪

这是仿照课本写的程序
=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=;

不明白是怎么回事。

xjzuo 发表于 2006-11-27 16:18

小波去噪 可以参考下面的帖子:
http://forum.vibunion.com/forum/viewthread.php?tid=5351

另:建议文件一般存在英文文件夹下,或直接放在work下,命名也取字母较好.
  Matlab一般不认中文的.

xxf 发表于 2006-11-27 17:05

刚刚找到那些程序,今晚上好好看看
谢谢

happy 发表于 2006-11-27 19:53

没有仔细看你的程序,不过单纯就程序错误来看,你只需要做一下很小的修改即可


c1=;

修改为

c1=;

xxf 发表于 2006-11-27 19:54

是这样改,可不知道为什么,我先看看课本再说吧
从基础做起

happy 发表于 2006-11-27 20:14

很显然,你读入的数据应该是列向量

那么最后你得到的a3也是列向量

而你通过zero形成的向量均为行向量,所以出现这样的错误

xxf 发表于 2006-11-28 16:33

明白了
页: [1]
查看完整版本: 求助:用小波变换进行去噪