文档库 最新最全的文档下载
当前位置:文档库 › 多项式拟合matlab之方法

多项式拟合matlab之方法

多项式拟合matlab之方法
多项式拟合matlab之方法

实验题目

使用Haar小波和傅里叶变换方法滤波及数据压缩

指导老师:李爱国

学生:陈立朝

学号:16208009004

专业:应用数学

西安科技大学计算机科学与技术学院

西安科技大学计算机科学与技术学院

1 实验报告

一、实验题目:

使用Haar 小波和傅里叶变换方法滤波及数据压缩

二、实验目的

1.掌握离散数据的Haar 小波变换和傅里叶变换的定义,基本原理和方法.

2.使用C++实现数据的Haar 小波变换和离散傅里叶变换.

3.掌握数据滤波的基本原理和方法.

4.掌握使用Haar 小波变换和离散傅里叶变换应用于数据压缩的基本原理和方法,并且对两种数据压缩进行评价.

三、实验步骤

1 算法原理

1.1 Haar 小波变换

(1)平均,细节及压缩原理

设{x1,x2}是一组两个元素组成的信号,定义平均与细节为2/)(21x x a +=,2/)(21x x d -=。则可以将{a ,d}作为原信号的一种表示,且信号可由{a ,d}恢复,1x a d =+,2x a d =-。

(2)尺度函数和小波方程 在小波分析中,引入记号)()(]1,0[t X t =φ,其中,)(]1,0[t X 表示区间[0,1]上的特征函数。定义

,()(2),0,1,...,21j j j k t t k k φφ=-=-

称)(t φ为Haar 尺度函数。由上式可知,)(,t k j φ都可以由)(0,0t φ伸缩和平移得到。

小波分析中,对于信号有不同分辨率的表示,当用较低分辨率来表示原始信号时,会丢失细节信息,需要找到一个函数来描述这种信息,该函数称之为小波函数。基本的小波函数定义如下:

[0,1/2)[1/2,1)1,01/2()()()1,1/210,t t X t X t t ψ≤

则)()12()2()(t t t t ψφφψ。--=称为Haar 小波。)()(t t t 1,00,1)(φφφ+=称为两尺度方程,)

()(t t t 1,00,1)(φφφ-=称为小波方程。 (3)Haar 小波变换计算方法

设),,(221n X X X 是一个长度为n 2(n>1)的离散信号序列,记为),,,(12,1,0,-n n n n a a a ,该序列可以用如下的带有尺度函数来表示:

,0,0,21,21()()...()

n n n n n n f t a t a t φφ--=++

一次小波分解的结果:

11111,01,01,01,01,211,211,211,21()()...()()...()n n n n n n n n n n n n f t a t a t d t d t φφψψ----------------=+++++对上式积分,由尺度函数的正交性,可得?--=1

0,1,1)()(k n k n a dt t t f φ。令k=0

,得到1,0,0,1()/n n n a a a -=+ 一般的,有

11,,2,21()/0,1,...21n n k n k n k a a a k --+=+=-

同理,有

11,,2,21()/0,1,...21n n k n k n k d a a k --+=-=-

2.傅里叶变换

(1)一维连续函数的傅里叶变换定义

设f(t)为连续的时间信号,则定义?+∞∞--=

dt e t f u F zut j 2)()(为f(t)的傅里叶变换,其反变换为?+∞

∞-=du e t F u f zut j 2)()(。 (2)一维离散傅里叶变换

对连续的时间信号f(t)等间隔采样,得到离散序列f(n)。假设采样N 次,则序列表示为{(0),(1),...,(1)}f f f N -。令n 为离散变量,u 为离散频率变量,则一维离散傅里叶变换及其反变换定义:

1

2/01()(),0,1,...,1N j un N n F u f n e u N N π--===-∑

12/0()(),0,1,...,1

N j un N u f n F u e n N π-===-∑

傅里叶变换的数学性质中,最重要的一点是:一个在时域或空域上看起来很复杂的信号(比如声音或图像)通常在频域上只集中在很小一块区域内,而很大一部分数值都接近于零。

即一个在空域中看起来占满全空间的信号,从频域中很可能只占用了极小一块区域,而大部分频率是被为零的。这就得到一个极为实用的结论:一个看起来信息量很大的信号,其实可以只用极少的数据就可加以描述。只要对它先做傅里叶变换,然后只记录那些不接近零的频域信息就可以达到数据压缩的目的。

(3)快速傅里叶变换FFT 原理

FFT 的基本思想:将大点数的DFT 分解为若干个小点数DFT 的组合,从而减少运算量。

令N znk j k n N e W /2,-=,则F(u)可改写为∑-==10,)(1)(N N k n N W n f N k F 。令N=2M ,其中M 为一正整数。带入式中,得到

21,201()()2M n k M n F k f n W M -==∑

11,,200111()(2)(21)2M M n k n k k M M M n n F k f n W f n W W M

M --==??=++????∑∑

1,01()(2)M n k e M n F k f n W M -==∑,1,01()(21)M n k o M n F k f n W M -==+∑

则有 21()()()2k e o M F k F k F k W ??=+??,21()()()2k e o M F k M F k F k W ??+=-??

上述推导说明:对一个长度为N 的序列进行傅里叶变换可以通过将其划分为2个N/2的序列进行傅里叶变换,对于N/2的傅里叶变换,可划分为两个N/4的变换,这一过程不断迭代,知道两点的序列为止,可计算出该序列的傅里叶变换。

(4)时间抽取的基2FFT 蝶形算法

对于(3)中的计算方法,可以采用蝶形运算符号来表示。本实验中采用的算法是时间抽取的基2FFT 算法实现快速傅里叶变换。

3. 数据压缩的评价准则

(1)数据压缩比

设原始信号f(n)的数据量大小为S ,经过数据压缩后,信号的数据量变为M ,一般情况下M

()/S M S η=-

由上式可知,数据压缩得越小,其数据压缩比越大。

(2)数据失真度

对于压缩后的数据,可以采用反变换等方式还原信号。设原信号为f(n),还原信号为f1(n),则我们定义还原信号与原始信号的差异为数据失真度。显然,数据恢复越接近原始信号,数据失真度越小。

4.算法步骤

(1)Haar 小波方法步骤

a)读入原始数据f(n)

b)对原始数据f(n) 进行小波变换。对原始数据进行不同层级(分辨率)下的小波变

换,得到不同的小波变换结果[An , Dn]

c)对于上步中的小波变换结果,把细节分量Dn置为0,即滤波得到压缩数据[An]

d)对于滤波结果[An],通过小波逆变换,恢复数据

e)计算恢复数据与原始数据的差异,进行压缩评价

(2)离散傅里叶变换步骤

a)读入原始数据f(n)

b)对原始数据f(n)进行离散傅里叶变换。使用蝶形算法计算傅里叶变换结果F(u)

c)对F(u)进行滤波,保留低频成分,舍弃高频成分,即得到原始数据的近似表示

d)对滤波结果的低频数据,高频分量恢复为零值,使用傅里叶反变换,恢复数据

e)计算恢复数据和原始数据的差异,进行压缩评价

5.程序流程图

图1 Haar小波变换流程图

在图1中,原始数据存放在文本文件eggs.txt中,由程序运行时读入。对结果的滤波是舍弃小波分解的细节部分。计算结果写入dwt.txt文件中。

图2 Haar小波压缩数据差异计算流程图

图2是计算使用Haar小波进行数据压缩后,与原始数据差异。图中的f(n)表示原始数据,A(n)是小波变化结果,f1(n)表示逆变换结果。

图3 离散傅里叶变换流程图

图3是傅里叶变换流程图。原始数据是eggs.txt。对F(u)滤波时,舍弃高频信息。计算结果写入fft.txt文件中。

图4 离散傅里叶变换压缩数据差异计算流程图

图4是傅里叶变化压缩数据后的差异计算。傅里叶逆变换时,对于高频分量补零,与低频分量来恢复数据f1(n)。

四、实验结果分析

1.傅里叶变换

图5 测试数据集的FFT变换及IFFT变换结果

在上图中,得到测试数据集的傅里叶变换结果。图中带括号的是数据变换的复数结果,后边的小数是变换后的幅值。可以看出,在傅里叶变换的结果中,有1/2的数据经过变换之后变为0值。这部分为0值的数据可以采用压缩方式存储,从而压缩原始数据。并且,经过傅里叶反变换后,原始数据可以得到良好的恢复。

图6 eggs.txt数据傅里叶变换结果

使用eggs.txt中的数据时,由于数据量较大,此处只是部分数据截图。数据不足2n的部分用零补齐。可以看出,变换后的数据幅值较大,且基本没有为0数据。此时,采用阈值进

σ=,即将阈值小于30的值置为0。

行滤波处理,取阈值30

2.小波变换

图7 测试数据集的小波变换DWT

由上图的实验结果可以看出,数据经过小波变换后,其能量集中于数据的靠前的小波系数。对于相同的数据集,可以采用不同级别的小波变换数据。

图8 eggs.txt数据小波变换结果

由上图,对于实验数据,经过小波变换后,大部分的数据都为0。正式小波变换的这一特点,使得小波变换可以用于数据的压缩。

五、实验结论

在报告的上两节中,分别介绍了使用傅里叶变换和小波变换处理数据的方法。由实验中,可以得到以下两点:第一,傅里叶变换时数据的整体变换方法,数据经过傅里叶变化后,其能量主要集中在变换结果的靠前的数据部分,对于后边的能量较小的部分,对于原始数据的差异描述,在存储时可以忽略,从而进行数据压缩。第二,小波变换的方法是既考虑数据整体性,又考虑数据的局部性。数据小波变换后,小波变换的前半部分系数表示数据的整体,后半部分表示数据的细节特征,对于一个连续的信号,其细节部分是微小的,可以忽略,从

而使得小波变换的后半部分系数为0,从而实现了数据的压缩。小波变换可以在不同的层级上进行。

对于一个连续的信号,采用傅里叶变换或是小波变换,数据可以得到较好的恢复,例如实验中的测试样本数据。对于给定的eggs.txt 数据集,由于其波动较大,细节差异超过了原始信号,对其进行压缩,恢复得到的数据跟原始数据的差异很大。

六、实验心得体会

1. 傅里叶变换和小波变换的原始数据

快速傅里叶变换和小波变换处理的数据都是n N 2 个。对于不足N 的数据,用零补齐后进行相应的变换,原始数据实际上改变。

2.数据恢复

数据压缩后,为了得到数据,数据恢复是必须的。对于傅里叶变换,采用傅里叶反变换的方法,可以得到压缩数据的回复数据;对于小波变换,则采用小波重构的方式。由于采用的压缩方式是有损的,所以恢复得到数据并非原始数据。

3.小波变换可以得到数据的不同分辨率的表示,对于数据的滤波和压缩也可以在不同的分辨率上进行。原始数据是最高分辨率。采用的分辨率越高,则对于数据的压缩比越小。

4.对于非n

2个数据的原始数据集(不采用补零方式),其傅里叶变换应如何计算? 这是本实验完成之后的疑问.

相关文档
相关文档 最新文档