我的小波消噪源代码?怎么比不上一句话wden啊
[讨论]我的小波消噪源代码?怎么比不上一句话wden啊load leleccum;
e=leleccum;
y = wgn(1,length(e),20);
e=e+y;
subplot(2,1,1);
plot(e);
T=thselect(e,'rigrsure');%阈值
=wavedec(e,3,'db4')
ca3=appcoef(c ,l ,'db4',3);
cd3=detcoef(c,l,3); %提取3级尺度下小波分解细节系数
for k=1:length(cd3)
if cd3(k)>T
cd3(k)=cd3(k)-T;
elseif cd3(k)<-T
cd3(k)=cd3(k)+-T;
else
cd3(k)=0;
end;
end;
cd2=detcoef(c,l,2); %提取2级尺度下小波分解细节系数
for k=1:length(cd2)
if cd2(k)>T
cd2(k)=cd2(k)-T;
elseif cd2(k)<-T
cd2(k)=cd2(k)+T;
else
cd2(k)=0;
end;
end;
cd1=detcoef(c,l,1); %提取1级尺度下小波分解细节系数
for k=1:length(cd1)
if cd1(k)>T
cd1(k)=cd1(k)-T;
elseif cd1(k)<-T
cd1(k)=cd1(k)+T;
else
cd1(k)=0;
end;
end;
es=waverec(,l ,'db4');
subplot(2,1,2);
plot(es);
save es.mat es
对强噪声背景信号,上面的程序好像效果很差,而一句wden却能够取到很好的效果,
但是wden好像又不允许我去修改阈值,真是麻烦啊,而且我只用了一个阈值,怎么样针对每一层都有个阈值呢,大家能另外写一个比我这个要好的小波消噪程序吗?
[ 本帖最后由 eight 于 2007-6-20 18:40 编辑 ] 你是想实现如下的滤波么
es=wden(e,'rigrsure','s','sln',3,'db4'); wden在数据处理上应该比你的精确吧,有函数为什么自己编,找麻烦?:lol wden函数可比你写的程序复杂多了
edit wden自己看一下wden代码吧
如果不能满足要求,可以自己对wden做改进 es=wden(e,'rigrsure','s','mln',3,'db4'); 比较一下自己代码与wden代码,这本就是学习过程。
页:
[1]