独善其身 发表于 2016-3-17 15:18

小波分析的简单应用

  最近看了看小波,小波理论半斤八两,小波应用半斤八两,先知道用吧,以后用的时候慢慢体会它的精髓吧。看很多地方用小波,基本就是简单的分解,然后重构各近似、细节信号,号称多分辨率分析,故障诊断中还常常配合Hilbert谱分析具体实现故障的提取。现介绍一个简单例子吧!
  3个正弦波(10、50、100Hz)混合,再掺和上噪声,结果如下

  小波分解,再重构各细节、近似信号如下


  最后简单对一个细节信号d3做Hilbert谱分析


  会发现,信号的倍频通过小波分析会很明显。
  感觉小波的问题是,不知道选哪个细节或近似,貌似就是靠目测。好吧,以后多用用,积累经验吧!
  代码如下
  clc
  clear all
  close all
  % 当前延拓模式是补零
  oldmode = dwtmode('zpd');
  ts = 0.001;
  fs = 1/ts;
  t=0:ts:1;
  N = length(t);
  x = sin(2*pi*10*t) + sin(2*pi*50*t) + sin(2*pi*100*t) + 0.1*randn(1, length(t));
  figure
  plot(t,x);
  xlabel('时间 t/s');
  ylabel('幅值 A');
  % 一维小波分解
   = wavedec(x,5,'db3');
  % 重构第1~5层逼近系数
  a5 = wrcoef('a',c,l,'db3',5);
  a4 = wrcoef('a',c,l,'db3',4);
  a3 = wrcoef('a',c,l,'db3',3);
  a2 = wrcoef('a',c,l,'db3',2);
  a1 = wrcoef('a',c,l,'db3',1);
  % 显示逼近系数
  figure
  subplot(5,1,1);plot(a5);ylabel('a5');
  subplot(5,1,2);plot(a4);ylabel('a4');
  subplot(5,1,3);plot(a3);ylabel('a3');
  subplot(5,1,4);plot(a2);ylabel('a2');
  subplot(5,1,5);plot(a1);ylabel('a1');
  xlabel('时间 t/s');
  % 重构第1~5层细节系数
  d5 = wrcoef('d',c,l,'db3',5);
  d4 = wrcoef('d',c,l,'db3',4);
  d3 = wrcoef('d',c,l,'db3',3);
  d2 = wrcoef('d',c,l,'db3',2);
  d1 = wrcoef('d',c,l,'db3',1);
  % 显示细节系数
  figure
  subplot(5,1,1);plot(d5);ylabel('d5');
  subplot(5,1,2);plot(d4);ylabel('d4');
  subplot(5,1,3);plot(d3);ylabel('d3');
  subplot(5,1,4);plot(d2);ylabel('d2');
  subplot(5,1,5);plot(d1);ylabel('d1');
  xlabel('时间 t/s');
  % 第1层细节信号的包络谱
  yh = hilbert(d3);
  aabs = abs(yh); % 包络的绝对值
  aabs = aabs - mean(aabs);
  aangle = unwrap(angle(yh)); % 包络的相位
  af = diff(aangle)/2/pi; % 包络的瞬时频率,差分代替微分计算
  % NFFT = 2^nextpow2(N);
  NFFT = 2^nextpow2(1024*4); % 改善栅栏效应
  f = fs*linspace(0,1,NFFT);
  YH = fft(yh, NFFT)/N; % Hilbert变换复信号的频谱
  A = fft(aabs, NFFT)/N; % 包络的频谱
  figure
  plot(f,abs(YH))
  title('原始复信号的Hilbert谱')
  xlabel('频率f (Hz)')
  ylabel('|YH(f)|')
  figure
  subplot(221)
  plot(t, aabs')
  title('包络的绝对值')
  legend('包络分析结果', '真实包络')
  subplot(222)
  plot(t, aangle)
  title('调制信号的相位')
  subplot(223)
  plot(t(1:end-1), af*fs)
  title('调制信号的瞬时频率')
  subplot(224)
  plot(f,abs(A))
  title('包络的频谱')
  xlabel('频率f (Hz)')
  ylabel('|A(f)|')
  % 恢复延拓模式
  dwtmode(oldmode);



转自:http://blog.sina.com.cn/s/blog_6163bdeb0102e21a.html

弗朗索瓦 发表于 2016-3-17 15:33

小波变换。。。。

  1学习小波变换所需的基础知识
  由于小波变换的知识涵盖了调和分析,实变函数论,泛函分析及矩阵论,所以没有一定的数学基础很难学好小波变换.但是对于我们工科学生来说,重要的是能利用这门知识来分析所遇到的问题.所以个人认为并不需要去详细学习调和分析,实变函数论,泛函分析及矩阵论等数学知识.最重要是的理解小波变换的思想!从这个意义上说付立叶变换这一关必需得过!因为小波变换的基础知识在付立叶变换中均有提及,我觉得这也就是很多小波变换的书都将付立叶分析作为其重要内容的原因.所以我认为学习小波应从<数字信号处理>中的付立叶分析开始.当然也可从<信号与系统>这本书开始.然后再看杨福生老师的小波变换书.个人觉得他的书最能为工科学生所接受.
  2信号的分解
  付立叶级数将周期信号分解为了一个个倍频分量的叠加,基函数是正交的,也就是通常所说的标准正交基.通过分解我们就能将特定的频率成分提取出来而实现特定的各种需要,如滤波,消噪等.付立叶变换则将倍频谱转换为了连续谱,其意义差不多.小波变换也是一种信号分解思想:只不过它是将信号分解为一个个频带信号的叠加.其中的低频部分作为信号的近似,高频部分作为信号的细节.所谓的细节部分就是一组组小波分量的叠加,也就是常说的小波级数.
  3小波变换的时频分析思想
  付立叶变换将信号从时域变换到了频域,从整体上看待信号所包含的频率成分.对于某个局部时间点或时间段上信号的频谱分析就无能为力了,对于我们从事信号的奇异性检测的人来说,付立叶变换就失去了意义(包括加窗付立叶变换).因为我们要找的是信号的奇异点(时域方面)和奇异点处所包含的频带(频域方面)也就是说需要一种时频分析方法.当然能有纯时域的分析方法更好!(据说数学形态学能达到这种效果).小波变换之所以可以检测信号的奇异点,正在于它的"小".因为用小的波去近似奇异信号要比正弦波要好的多.
  4小波变换的实质
  小波变换的公式有内积形式和卷积形式,两种形式的实质都是一样的.它要求的就是一个个小波分量的系数也就是"权".其直观意义就是首先用一个时窗最窄,频窗最宽的小波作为尺子去一步步地"量"信号,也就是去比较信号与小波的相似程度.信号局部与小波越相似,则小波变换的值越大,否则越小!当一步比较完成后,再将尺子拉长一倍,又去一步步地比较,从而得出一组组数据.如此这般循环,最后得出的就是信号的小波分解(小波级数).当然这只是一种粗略的解释.
  5连续小波变换,二进小波变换与离散小波变换的关系
  当尺度及位移均作连续变化时,可以理解必将产生一大堆数据,作实际应用时并不需要这么多的数据,因此就产生了离散的思想.将尺度作二进离散就得到二进小波变换,同时也将信号的频带作了二进离散.当觉得二进离散数据量仍显大时,同时将位移也作离散就得到了离散小波变换!
  6 MALLAT算法的意义
  想必大家都注意到,小波变换是以内积或卷积的形式实现的,这给数值计算带来了不利之处,因为用计算机作数值积分其计算量大.MALLAT算法则解决了这一问题,它不涉及小波的具体形式,只是对系数进行操作!其计算也就是用高通及低通滤波系数与小波系数作卷积.因为作信号处理时,我们往往并不关心小皮的具体形式,更为关心小波系数.需提出的是该算法仅适用于正交小波如果小波不是正交的(如B样条小波)则算法失效!
  7小波变换的模极大值及其意义
  对于我们搞信号奇异性检测的人来说,小波变换最重要的应用就是用模极大值定值奇异点.我觉得模极大值可以从两个方面去理解:第一,从直观角度,上文已说明小波变换的实质就是一种度量波形相似程度的方法.信号与小波越相似,则小波系数越大.这也就可理解为出现了小波变换的模极大值.因为当信号出现奇异点时,或是间断点,或是一阶导数不连续点,其在各个尺度下都将必然出现大的小波系数.从而可以定位奇异点!第二个方面从小波的取法来看,当小波取为光滑函数一阶导数或二阶导数时,从公式可以推导出小波变换将出现模极大值点或是过零点.也就是很多书上说的模极大值检测和零交叉检测.这些可以查书看!
  我只谈谈连续小波变换,对于离散的也有同样的argument。小波函数的dilation和translation是这样一个形式:1/\sqrt{|s|}\psi((x-u)/s),s是scale,u是该小波atom的center。
  由于根据定义,小波的积分是0,也就是说小波函数的傅立叶变换在零点为零。再有于小波函数的傅立叶变换一般是连续的(比如如果小波是属于L_1的),这样在0的一个小临域里面,小波的傅立叶变换很接近零,这也就是说小波函数的傅立叶变换可以看成某个高通滤波器的transfer function,这样小波变换W(f)实际是在measure该函数f在u点附近的variation。从这个角度看的话,如果小波的宽度很大(对应尺度s很大),该函数在该小波的窗口下的variation就很大;如果小波的宽度小(对应尺度s小),则函数在该小波的窗口下的variation就相对比较小(除非信号是fractal,呵呵)。



转自:http://blog.sina.com.cn/s/blog_4899efe301009fo8.html

canyiyuan 发表于 2016-3-18 13:22

[转]快速傅里叶变换和小波分析

  概要介绍
  傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。最初傅里叶分析是作为热过程的解析分析的工具被提出的.
  傅里叶变换属于谐波分析。
  傅里叶变换的逆变换容易求出,而且形式与正变换非常类似;
  正弦基函数是微分运算的本征函数,从而使得线性微分方程的求解可以转化为常系数的代数方程的求解.在线性时不变的物理系统内,频率是个不变的性质,从而系统对于复杂激励的响应可以通过组合其对不同频率正弦信号的响应来获取;
  卷积定理指出:傅里叶变换可以化复杂的卷积运算为简单的乘积运算,从而提供了计算卷积的一种简单手段;
  离散形式的傅里叶变换可以利用数字计算机快速的算出(其算法称为快速傅里叶变换算法(FFT)).
  1、为什么要进行傅里叶变换,其物理意义是什么?
  傅立叶变换是数字信号处理领域一种很重要的算法。要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。
  和傅立叶变换算法对应的是反傅立叶变换算法。该反变换从本质上说也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。
  因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。
  从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换。它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。
  在数学领域,尽管最初傅立叶分析是作为热过程的解析分析的工具,但是其思想方法仍然具有典型的还原论和分析主义的特征。"任意"的函数通过一定的分解,都能够表示为正弦函数的线性组合的形式,而正弦函数在物理上是被充分研究而相对简单的函数类:1. 傅立叶变换是线性算子,若赋予适当的范数,它还是酉算子;2. 傅立叶变换的逆变换容易求出,而且形式与正变换非常类似;3. 正弦基函数是微分运算的本征函数,从而使得线性微分方程的求解可以转化为常系数的代数方程的求解.在线性时不变杂的卷积运算为简单的乘积运算,从而提供了计算卷积的一种简单手段;5. 离散形式的傅立叶的物理系统内,频率是个不变的性质,从而系统对于复杂激励的响应可以通过组合其对不同频率正弦信号的响应来获取;4. 著名的卷积定理指出:傅立叶变换可以化复变换可以利用数字计算机快速的算出(其算法称为快速傅立叶变换算法(FFT))。
  正是由于上述的良好性质,傅里叶变换在物理学、数论、组合数学、信号处理、概率、统计、密码学、声学、光学等领域都有着广泛的应用。
  2、图像傅立叶变换的物理意义
  图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数
  傅立叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,我们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。由于空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就由梯度来表示,这样我们可以通过观察图像得知物体在三维空间中的对应关系。为什么要提梯度?因为实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上各点并不存在一一对应的关系,即使在不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际上图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分相反)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察傅立叶变换后的频谱图,也叫功率图,我们首先就可以看出,图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰,一副带有正弦干扰,移频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻滤波器消除干扰
  快速傅氏变换 英文名是fast Fourier transform
  快速傅氏变换(FFT)是离散傅氏变换(DFT)的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
  设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。
  小波分析 (Wavelet)
  小波分析是当前数学中一个迅速发展的新领域,它同时具有理论深刻和应用十分广泛的双重意义。
  小波变换的概念是由法国从事石油信号处理的工程师J.Morlet在1974年首先提出的,通过物理的直观和信号处理的实际需要经验的建立了反演公式,当时未能得到数学家的认可。正如1807年法国的热学工程师J.B.J.Fourier提出任一函数都能展开成三角函数的无穷级数的创新概念未能得到著名数学家J.L.Lagrange,P.S.Laplace以及A.M.Legendre的认可一样。幸运的是,早在七十年代,A.Calderon表示定理的发现、Hardy空间的原子分解和无条件基的深入研究为小波变换的诞生做了理论上的准备,而且J.O.Stromberg还构造了历史上非常类似于现在的小波基;1986年著名数学家Y.Meyer偶然构造出一个真正的小波基,并与S.Mallat合作建立了构造小波基的同意方法枣多尺度分析之后,小波分析才开始蓬勃发展起来,其中比利时女数学家I.Daubechies撰写的《小波十讲(Ten Lectures on Wavelets)》对小波的普及起了重要的推动作用。它与Fourier变换、窗口Fourier变换(Gabor变换)相比,这是一个时间和频率的局域变换,因而能有效的从信号中提取信息,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析(Multiscale Analysis),解决了Fourier变换不能解决的许多困难问题,从而小波变化被誉为“数学显微镜”,它是调和分析发展史上里程碑式的进展。
  小波(Wavelet)这一术语,顾名思义,“小波”就是小的波形。所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性,其振幅正负相间的震荡形式。与Fourier变换相比,小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。有人把小波变换称为“数学显微镜”。
  小波分析的应用是与小波分析的理论研究紧密地结合在一起地。现在,它已经在科技信息产业领域取得了令人瞩目的成就。 电子信息技术是六大高新技术中重要的一个领域,它的重要方面是图像和信号处理。现今,信号处理已经成为当代科学技术工作的重要部分,信号处理的目的就是:准确的分析、诊断、编码压缩和量化、快速传递或存储、精确地重构(或恢复)。从数学地角度来看,信号与图像处理可以统一看作是信号处理(图像可以看作是二维信号),在小波分析地许多分析的许多应用中,都可以归结为信号处理问题。现在,对于其性质随实践是稳定不变的信号,处理的理想工具仍然是傅立叶分析。但是在实际应用中的绝大多数信号是非稳定的,而特别适用于非稳定信号的工具就是小波分析。
  小波分析是当前应用数学和工程学科中一个迅速发展的新领域,经过近10年的探索研究,重要的数学形式化体系已经建立,理论基础更加扎实。与Fourier变换相比,小波变换是空间(时间)和频率的局部变换,因而能有效地从信号中提取信息。通过伸缩和平移等运算功能可对函数或信号进行多尺度的细化分析,解决了Fourier变换不能解决的许多困难问题。小波变换联系了应用数学、物理学、计算机科学、信号与信息处理、图像处理、地震勘探等多个学科。数学家认为,小波分析是一个新的数学分支,它是泛函分析、Fourier分析、样调分析、数值分析的完美结晶;信号和信息处理专家认为,小波分析是时间—尺度分析和多分辨分析的一种新技术,它在信号分析、语音合成、图像识别、计算机视觉、数据压缩、地震勘探、大气与海洋波分析等方面的研究都取得了有科学意义和应用价值的成果。
  事实上小波分析的应用领域十分广泛,它包括:数学领域的许多学科;信号分析、图像处理;量子力学、理论物理;军事电子对抗与武器的智能化;计算机分类与识别;音乐与语言的人工合成;医学成像与诊断;地震勘探数据处理;大型机械的故障诊断等方面;例如,在数学方面,它已用于数值分析、构造快速数值方法、曲线曲面构造、微分方程求解、控制论等。在信号分析方面的滤波、去噪声、压缩、传递等。在图像处理方面的图像压缩、分类、识别与诊断,去污等。在医学成像方面的减少B超、CT、核磁共振成像的时间,提高分辨率等。
  (1)小波分析用于信号与图像压缩是小波分析应用的一个重要方面。它的特点是压缩比高,压缩速度快,压缩后能保持信号与图像的特征不变,且在传递中可以抗干扰。基于小波分析的压缩方法很多,比较成功的有小波包最好基方法,小波域纹理模型方法,小波变换零树压缩,小波变换向量压缩等。
  (2)小波在信号分析中的应用也十分广泛。它可以用于边界的处理与滤波、时频分析、信噪分离与提取弱信号、求分形指数、信号的识别与诊断以及多尺度边缘检测等。
  (3)在工程技术等方面的应用。包括计算机视觉、计算机图形学、曲线设计、湍流、远程宇宙的研究与生物医学方面。
  傅立叶变换的基函数是sin cos函数,也就是说它只是用这2个去逼近原信号,对于原信号不一定都与正弦和余弦函数相似,因此小波基函数的多样性能使逼近的权重因子更加准确.正是因为FFT的频域局部性不强,而且时频分开,所以才有了以后的方法――当然包括了小波!


转自:http://blog.sina.com.cn/s/blog_44719d0e0100xs95.html

页: [1]
查看完整版本: 小波分析的简单应用