加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

信号的小波降噪 matlab仿真程序

(2012-06-07 15:31:12)
标签:

杂谈

信号的小波降噪

matlab代写程序   网址:http://item.taobao.com/item.htm?id=17898804306  加QQ:1046233911 

小波分析的重要应用之一就是用于信号降噪。在此,简要地阐述一下小波分析对信号降噪的基本原理。

我们知道,一个含噪的一维信号模型可表示为如下形式:

其中, 为含噪信号, 为有用信号, 为噪声信号。这里我们认为 是一个1级高斯白噪声,通常表现为高频信号,而实际工程中通常为低频信号或者是一些比较平稳的信号。因此我们可按如下的方法进行降噪处理。

首先对信号进行小波分解,一般地,噪声信号多包含在具有较高频率的细节中,从而,可利用门限阀值等形式对所分解的小波系数进行出来,然后对信号进行小波重构即可达到对信号降噪的木的。对信号降噪实质上是一直信号中的无庸部分,恢复信号中有用部分的过程。

1.  噪声在小波分解下的特性

在此,我们将噪声e看做普通信号分析以下它的相关性、频谱和频率分布这3个主要特征。

总体上,对于一维离散信号来说,其高频部分所影响的是小波分解的第一层细节,其低频部分所影响的小波分解的最深层和低频层。如果对一个仅由白噪声所组成的信号进行分析,则可得出这样的结论:高频系数的幅值随着分解层次的增加而迅速地衰减,且其方差也有同样的变化趋势。在这里用表示对噪声用小波分解后的系数,其中,j表示尺度,k表示时间,对离散时间信号引入如下的属性:

(1)   如果e是一个平稳、零均值的白噪声,那么它的小波分解系数是相互独立的。

(2)   如果e是一个高斯型噪声,那么其小波分解系数是互不相关的,且服从高斯分布。

(3)   如果e是一个平稳、有色、零均值的高斯型噪声序列,那么他的小拨分解系数也是高斯序列,并且对每一个分解尺度j,其相应的系数是一个平稳、有色的序列。如何选择对分解系数具有解相关性的小波是一个很困难的问题,在目前也没有得到很好的解决。进一步需指出,即使存在一个小波,但是它对噪声的解相关性取决于噪声的有色性,为了用小波计算噪声的解相关性,必须知道噪声本身的颜色。

(4)   如果e是一个固定的零均值ARMA模型,那么对每一个小波分解尺度j, 也是固定的零均值ARMA模型,且其特性取决于尺度j。

(5)   如果e是一个噪声:

●  若其相关函数已知,则可计算系数序列 和 ;

●  若其相关函数谱已知,则可计算 的谱及尺度j和 的交叉谱。

2.  小波降噪的步骤和方法

一般而言,一维信号降噪的过程可分为如下3个步骤。

(1)   信号的小波分解。选择一个小波并确实分解的层次,然后进行分解计算。

(2)   小波分解高频系数的阀值量化。对各个分解尺度下的高频系数选择一个阀值进行软阀值量化处理。

(3)   一维小波重构。根据小波分解的底层低频系数和各层高频系数进行一维小波重构。

 这3个步骤中,最关键的是如何选择阀值及如何进行阀值量化,在某种程度上,它关系到信号降噪的质量。

     应用一维小波分析进行信号降噪处理,主要通过前面介绍的两个函数wden和wdencmp来实现。wden函数返回的是经过对原始信号s进行降噪处理后的信号sd。wdencmp函数是一种使用更为普遍的函数,它可以直接对一维或二维信号进行降噪或压缩,处理方法也是通过对小波分解系数进行阀值量化来实现。

小波分析进行阀值处理一般有下述3种方法。

(1)      默认阀值消噪处理。该方法利用函数ddencmp生成信号的默认阀值,然后利用函数wdencmp进行消噪处理。

(2)      给定阀值消噪处理。在实际的消噪处理过程中,阀值往往可通过经验公式获得,且这种阀值比默认阀值的可信度高。在进行阀值量化处理时可用函数wthresh。

(3)      强制消噪处理。该方法是将小波分解结构中的高频系数全部置为0,即滤掉所有高频部分,然后对信号进行小波重构。这种方法比较简单,且消噪后的信号比较平滑,但是容易丢失信号中的有用成分。

3.        一维小波降噪的综合应用实例

下面用具体的例子来说明小波分析对信号的降噪作用。

%当前延拓模式是补零

%设置信噪比和随机数种子

snr=3;init=2055615866;

%产生原始信号,并叠加标准高斯白噪声

[xref,x]=wnoise(3,11,snr,init);

%对x使用sym8小波进行5层分解,得到高频系数。使用SURE阀值、软阀值进行降噪

lev=5;

xd=wden(x,'heursure','s','one',lev,'sym8');

figure(1);

set(gcf,'color','w');

%画出原始信号

subplot(311),plot(xref),axis([1 2048 -10 10]);

title('原始信号');

subplot(312),plot(x), axis([1 2048 -10 10]);

title(['降噪信号-信噪比为',num2str(fix(snr))]);

subplot(313),plot(xd), axis([1 2048 -10 10]);

title('降噪信号-heuristic SURE');

% 使用软SURE阀值降噪

xd=wden(x,'heursure','s','one',lev,'sym8');

%画出信号

figure(2);

set(gcf,'color','w');

subplot(311),plot(xd), axis([1 2048 -10 10]);

title('降噪信号-SURE');

% 对噪声标准差进行单层估计,使用fixed form 阀值降噪

xd=wden(x,'sqtwolog','s','sln',lev,'sym8');

% 画出信号

subplot(312),plot(xd), axis([1 2048 -10 10]);

title('降噪信号-Fixed form 阀值');

% 对噪声标准差进行单层估计,使用minimax 阀值降噪

xd=wden(x,'minimaxi','s','sln',lev,'sym8');

% 画出信号

subplot(313),plot(xd), axis([1 2048 -10 10]);

title('De-noised signal-Minimax');

% 如果需要多次尝试,最后是执行一次分解,多次设置阀值

% 分解

[c,l]=wavedec(x,lev,'sym8');

% 使用小波分解结构[c,l]设置阀值

xd=wden(c,l,' minimaxi','s','sln',lev,'sym8');

结果如图所示。

http://s10/bmiddle/5efd18a14c1dce4ec0b39&690matlab仿真程序" TITLE="信号的小波降噪 matlab仿真程序" />

http://s3/bmiddle/5efd18a14c1dce5025752&690matlab仿真程序" TITLE="信号的小波降噪 matlab仿真程序" />

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有