新浪博客

Matlab小波去噪(默认,强制,给定三种情况)

2015-06-20 11:37阅读:
http://www.ilovematlab.cn/thread-50310-1-1.html
%% 利用小波分析对监测采集的信号进行去噪处理,恢复原始信号
%小波分析进行去噪有3中方法:
%1、默认阈值去噪处理。该方法利用函数ddencmp( )生成信号的默认阈值,然后利用函数wdencmp( )进行去噪处理;
%2、给定阈值去噪处理。在实际的去噪处理过程中,阈值往往可通过经验公式获得,且这种阈值比默认阈值的可信度高。在进行阈值量化处理时可利用函数wthresh( );
%3、强制去噪处理。该方法是将小波分解结构中的高频系数全部置0,即滤掉所有高频部分,然后对信号进行小波重构。这种方法比较简单,且去噪后的信号比较平滑,但是容易丢失信号中的有用成分。
%% 利用小波分析对监测采集的水轮机信号进行去噪处理,恢复原始信号
%Program Start
%% 载入监测所得信号
load default.txt; %装载采集的信号
x= default;
lx=length(x);
t=[0:1:length(x)-1]';
%% 绘制监测所得信号
subplot(2,2,1);
plot(t,x);
titl
e('原始信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
%% 用db1小波对原始信号进行3层分解并提取小波系数
[c,l]=wavedec(x,3,'db1');%sym8
ca3=appcoef(c,l,'db1',3);%低频部分
cd3=detcoef(c,l,3);%高频部分
cd2=detcoef(c,l,2);%高频部分
cd1=detcoef(c,l,1);%高频部分
%% 对信号进行强制去噪处理并图示
cdd3=zeros(1,length(cd3));
cdd2=zeros(1,length(cd2));
cdd1=zeros(1,length(cd1));
c1=[ca3,cdd3,cdd2,cdd1];
x1=waverec(c1,1,'db1');
subplot(2,2,2);
plot(x1);
title('强制去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
%% 默认阈值对信号去噪并图示
%用ddencmp( )函数获得信号的默认阈值,使用wdencmp( )函数实现去噪过程
[thr,sorh,keepapp]=ddencmp('den','wv',x);
x2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp);
subplot(2,2,3);
plot(x2);
title('默认阈值去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
%% 给定的软阈值进行去噪处理并图示
cd1soft=wthresh(cd1,'x',1.465);%经验给出软阈值数
cd2soft=wthresh(cd2,'x',1.823); %经验给出软阈值数
cd3soft=wthresh(cd3,'x',2.768); %经验给出软阈值数
c2=[ca3,cd3soft,cd2soft,cd1soft];
x3=waverec(c2,1,'db1');
subplot(2,2,4);
plot(x3);
title('给定软阈值去噪后信号');
grid on
set(gcf,'color','w')
set(gca,'fontname','times New Roman')
set(gca,'fontsize',14.0)
以上就是三中小波去噪的原程序。
但红色标注的地方,我却运行不过去。
提示分别问:
1,??? Error using ==> horzcat
CAT arguments dimensions are not consistent.
Error in ==> tt at 33
c1=[ca3,cdd3,cdd2,cdd1];
2,??? Error using ==> wthresh at 30
Invalid argument value.
Error in ==> tt at 54
cd1soft=wthresh(cd1,'x',1.465);%经验给出软阈值数
请问为什么???

我解决这个问题了,c1=[a3' dd3 dd2 dd1]
c2=[ca3' cd3soft' cd2soft' cd1soft'];

我的更多文章

下载客户端阅读体验更佳

APP专享