基于小波分析的信号去噪技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于小波分析的信号去噪技术
[摘要] 介绍了小波变换的基本思想和优点及多分辨率分析的过程, 并在MA TLAB 下利用小波变换工具箱, 编写程序实现信号去噪处理。

充分显示了小波变换在处理非平稳信号中的优势。

[关键词] 小波变换 信号去噪 模极大值 李普西兹指数
在通信及计算机过程控制系统中,对信号进行实时采样是很重要的环节。

但由于信号在激励、传输和检测过程中,可能不同程度地受到随机噪声的污染,特别在小信号采集和测量中,噪声干扰显得尤其严重。

因此,如何消除实际信号中的噪声,从混有噪声的信号中提取有用信息一直是信息学科研究的焦点之一。

傅里叶变换是一种经典方法,适用于诸多场合。

但由于傅里叶变换是一种全局变换,无法表述信号的时域局部性质,而这种性质恰恰是非平稳信号最根本和最关键的性质。

为了更有效地处理非平稳信号,人们提出了小波变换这种新的信号分析理论。

小波变换是一种信号的时频分析,它具有多分辨率的特点,可以方便地从混有强噪声的信号中提取原始信号,被誉为分析信号的显微镜。

本文主要讨论应用小波变换的理论,利用Matlab 软件在计算机上实现了信号的噪声消除,从混有噪声的实际信号中提取了原始信号,具有非常实用的意义。

1.小波变换与多分辨率分析
设ψ是定义在(-,+)∞∞上能量有限的函数,Ψ构成平方可积信号空间,记为Ψ∈L2(R),则生成函数族{
ab ψ }: 1/2()||()ab t b t a a --ψ=ψ ,0b a -∞<<+∞> (1)
Ψ(t)称为小波函数,()ab t ψ由Ψ(t)伸缩和平移生成,为小波基函数。

a 为
伸缩因子,b 为平移因子。

对任一信号()f i ∈L2(R)的连续小波变换可定义为信号与小波基函数的内积:
1/2
(();,),||()ab R t b WT f t a b f a dt a --=<ψ>=ψ⎰ (2)
连续小波变换具有线性、平移不变性、伸缩共变性、自相似性和冗余性等重要性质。

在工程上利用小波变换对信号进行处理,应用最广泛的是二进小波变换,即取12a =,1.2b k =,则f(t)的二进小波变换为:
/2,(),()|2|()(2)j j f j k R W f t t f t k dt --=<ψ>=•ψ-⎰ (3)
二进小波对尺度参数进行离散化,而对时间域上的平移参量保持连续变化,不破坏信号在时间域上的平移变量。

1988年,Mallat 在构造正交小波基时提出了多分辨率分析的概念,从空间的概念上形象地说明了小波的多分辨特性。

将此之前的所有正交小波基的构造法统一起来,给出了正交小波变换的快速算法,即Mallat 算法。

若k f 为信号的离散采样数据,如果
0,k k C f =,则有: ,1,2,1,2j k j N k
n j k j N k
n C C h D C g -•--•-=•=•∑∑
k=0,1,2,3….N-1 (4)
N 为离散采样数据;h,g 为滤波器脉冲响应,即分解各列滤波器组系数;,j k
C 为信号的逼近系数;
,j k k D f 为k f 在2j 分辨率下的连续逼近;,j k D 为信号的细节系数;,j k k D f 为k
f 在2j 分辨率下的离散细节。

信号的Mallat 重构算法为: ''1,,,22j N j j N k N k
C C h
D g -••--=+∑∑ '2N k h -和'2N k g -分别为2N k h -和2N k g -的共轭转置,实际上也是滤波器的脉冲响应,即重构各滤波器组系数。

Mallat 算法使离散的采样信号通过低通滤波器H 后得逼近原始信号的数据;通过高通滤波器G 后得信号边缘细节信息的数据,所以小波变换的实质是滤波运算。

随着小波变换尺度的增加可以将原始信号边缘和噪声产生的毛刺逐渐平滑掉,细节信息由噪声占主导地位逐渐转为信号占主导地位。

我们期望这种滤波器
产生的相对失真尽可能小,是提取突变信号特征的关键。

2.小波消噪的基本原理及方法
运用小波分析进行信号噪声消除是小波分析的一个非常重要的应用之一。

一个含噪声的一维信号的模型可表示为:
()().()s i f i e i σ=+ 0,1,2,...,1i n =- (6)
式中,()f i 为真实信号;()e i 为噪声;()s i 为含噪信号。

这里以一个简单的噪声模型加以说明,即()e i 为高斯白噪声N (0,1),噪声级为1。

在实际工程中,有用信号通常表现为低频信号或较平稳的信号,噪声信号则表现为高频信号,所以消噪过程可按以下方法进行处理。

首先对实际信号进行小波分解,选择小波并确定分解层次为N ,则噪声部分通常包含在高频中。

然后对小波分解的高频系数进行门限阈值量化处理。

最后根据小波分解的第N 层低频系数和经过量化后的1~N 层高频系数进行小波重构,达到消除噪声的目的,即抑制信号的噪声,在实际信号中恢复真实信号。

小波消噪的方法一般有3种:
(1)强制消噪处理该方法把小波分解结构中的高频部分全变成零,即把高频部分全部消除,再对信号进行重构。

此方法简单,消噪后信号也比较平滑,但易丢失有用信号。

(2)默认阈值消噪处理在Matlab 中利用ddencmp 函数产生信号默认阈值,然后利用wdencmp 函数进行消噪处理。

(3)给定软或硬阈值消噪处理在实际消噪处理过程中,阈值可通过经验公式获得,而且这种阈值比默认阈值更具可信度。

3.小波消噪的Matlab 实现
Matlab 软件是Mathwork 公司于1982年推出的一套高性能的数值计算可视化软件。

他解决实际的工程和数学问题和实现小波消噪的仿真。

根据以上算法,通过Matlab 编制程序并运行,可以得到如图1所示结果。

图1 原信号以及污染后的信号
图2 小波分解的系数
图3 对比图
图1中,在小波抑制后的信号中对应t=60处的噪声是人为添加的,它所含的噪声是一个白噪声,但实际的噪声大多不是白噪声。

图 2 所对应的不同分解系数时的波形。

图3是原信号同去噪后的信号的对比图。

可以看到利用小波抑制真实噪声仍有不错的效果。

小波消噪对非平稳信号的噪声消除具有无可比拟的优点。

在实际工程应用中,所分析的信号可能包含许多尖峰或突变部分,且噪声不是平稳的白噪声,对这种信号进行分析处理,首先要做预处理,将噪声去除,提取有用信号。

对于这种信号的消噪,传统的Fourior分析显得无能为力。

因为Fourior分析是将信号变换到频域中进行分析,不能给出信号在某个时间点的变化情况,因此信号在时轴上的任一突变都会影响信号的整个频谱。

而小波分析由于能同时在时频域中对信号进行分析,所以他能有效区别信号中的突变部分和噪声,从而实现非平稳
信号的消噪。

4.结语
小波变换是一种信号的时频分析方法,它具有多分辨率分析的特点,很适合探测正常信号中夹带的瞬态反常现象并展示其成分,有效区分信号中的突变部分和噪声。

因此利用小波变换进行信号消除的同时提取含噪信号具有较好的效果。

通过Matlab编制程序进行给定信号的噪声抑制和非平稳信号的噪声消除实验表明:基于小波变换的消噪方法是一种提取有用信号、展示噪声和突变信号的优越方法,具有广阔的实用价值。

附程序:
% mallet_wavelet.m
[l,h]=wfilters('db10','d');
low_construct=l;
L_fre=20; %滤波器长度
low_decompose=low_construct(end:-1:1); %确定h0(-n),低通分解滤波器
for i_high=1:L_fre; %确定h1(n)=(-1)^n,高通重建滤波器
if(mod(i_high,2)==0);
coefficient=-1;
else
coefficient=1;
end
high_construct(1,i_high)=low_decompose(1,i_high)*coefficient;
end
high_decompose=high_construct(end:-1:1); %高通分解滤波器h1(-n)
L_signal=100; %信号长度
n=1:L_signal; %原始信号赋值
f=10;
t=0.001;
y=10*cos(2*pi*50*n*t).*exp(-30*n*t);
zero1=zeros(1,60); %信号加噪声信号产生
zero2=zeros(1,30);
noise=[zero1,3*(randn(1,10)-0.5),zero2];
y_noise=y+noise;
figure(1);
subplot(2,1,1);
plot(y);
title('原信号');
subplot(2,1,2);
plot(y_noise);
title('受噪声污染的信号');
check1=sum(high_decompose); %h0(n),性质校验check2=sum(low_decompose);
check3=norm(high_decompose);
check4=norm(low_decompose);
l_fre=conv(y_noise,low_decompose); %卷积
l_fre_down=dyaddown(l_fre); %抽取,得低频细节
h_fre=conv(y_noise,high_decompose);
h_fre_down=dyaddown(h_fre); %信号高频细节
figure(2);
subplot(2,1,1)
plot(l_fre_down);
title('小波分解的低频系数');
subplot(2,1,2);
plot(h_fre_down);
title('小波分解的高频系数');
% 消噪处理
for i_decrease=31:44;
if abs(h_fre_down(1,i_decrease))>=0.000001
h_fre_down(1,i_decrease)=(10^-7);
end
end
l_fre_pull=dyadup(l_fre_down); %0差值
h_fre_pull=dyadup(h_fre_down);
l_fre_denoise=conv(low_construct,l_fre_pull);
h_fre_denoise=conv(high_construct,h_fre_pull);
l_fre_keep=wkeep(l_fre_denoise,L_signal); %取结果的中心部分,消除卷积影响
h_fre_keep=wkeep(h_fre_denoise,L_signal);
sig_denoise=l_fre_keep+h_fre_keep; %消噪后信号重构%平滑处理
for j=1:2
for i=60:70;
sig_denoise(i)=sig_denoise(i-2)+sig_denoise(i+2)/2; end;
end;
compare=sig_denoise-y; %与原信号比较
figure(3);
subplot(3,1,1)
plot(y);
ylabel('原信号');
subplot(3,1,2);
plot(sig_denoise);
ylabel('消噪后信号');
subplot(3,1,3);
plot(compare);
ylabel('两信号比较 ');。

相关文档
最新文档