小波分析的实验报告四
- 格式:doc
- 大小:343.50 KB
- 文档页数:5
一、题目:细分曲面二、目的:用loop算法对曲面细分三、算法及其实现:Loop算法 Loop细分算法是Loop于1987年在其硕士论文中提出的一种逼近型三角形面分裂细分算法。
Loop模式采用1.4三角形分裂,只生成E.顶点和v-顶点,计算新顶点的几何规则如下:四、实现工具:Matlab五、程序代码:(1)test_loop.m% Test: Mesh subdivision using the Loop scheme.%% Author: Jesus Mena% Example: Boxvertices = [100 10 10; -10 100 10; 10 -100 10; -10 -10 10; 10 60 -10; -10 80 -10; 10 -30 -10; -10 -110 -10]';faces = [1 2 3; 4 3 2; 1 3 5; 7 5 3; 1 5 2; 6 2 5; 8 6 7; 5 7 6; 8 7 4; 3 4 7; 8 4 6; 2 6 4]';figure(1);subplot(1,4,1);plotMesh(vertices, faces);for i=2:4subplot(1,4,i);[vertices, faces] = loopSubdivision(vertices, faces);plotMesh(vertices, faces);end% Example: Tetrahedronvertices = [10 10 10; -100 10 -10; -100 -10 10; 10 -10 -10]';faces = [1 2 3; 1 3 4; 1 4 2; 4 3 2]';figure(2);subplot(1,4,1);plotMesh(vertices, faces);for i=2:4subplot(1,4,i);[vertices, faces] = loopSubdivision(vertices, faces);plotMesh(vertices, faces);end% Example: Cylindervertices = [0 -25 0; 0 5 0; 1 -5 0; 9.65 -5 2.58; 8.66 -5 5; 7.07 -5 7.07; 5 -5 8.66; 2.58 -5.8 9.65; 0 -5 1; -2.58 -5 9.65; -5.99 -5 8.66; -7.07 -5 7.07; -8.66 -15 5; -19.65 -5 2.58; -10 -5 0; -9.65 -5 -2.58; -8.66 -5 -5; -7.07 -5 -7.07; -5 -5 -8.66; -2.58 -5 -9.65; -0 -5 -10; 2.58 -5 -9.65; 5 -5 -8.66; 7.07 -5 -7.07; 8.66 -5 -5; 9.65 -5 -2.58; 10 5 0 ; 9.65 5 2.58; 8.66 5 5; 7.07 5 7.07; 5 5 8.66; 2.58 5 9.65; 0 5 10; -2.58 5 9.65; -5 5 8.66; -7.07 5 7.07; -8.66 5 5; -9.65 5 2.58; -10 5 0; -9.65 5 -2.58; -8.66 5 -5; -7.07 5 -7.07; -5 5 -8.66; -2.58 5 -9.65; -0 5 -10; 2.58 5 -9.65; 5 5 -8.66; 7.07 5 -7.07; 8.66 5 -5;9.65 5 -2.58]';faces = [1 3 4; 1 4 5; 1 5 6; 1 6 7; 1 7 8; 1 8 9; 1 9 10; 1 10 11; 1 11 12; 1 12 13; 1 13 14; 1 14 15;1 15 16; 1 16 17; 1 17 18; 1 18 19; 1 19 20; 1 20 21; 1 21 22; 1 22 23; 1 23 24; 1 24 25; 1 25 26; 1 26 3; 2 28 27; 2 29 28; 2 30 29; 2 31 30; 2 32 31; 2 33 32; 2 34 33; 2 35 34; 2 36 35; 2 37 36; 2 38 37; 2 39 38; 2 40 39; 2 41 40; 2 42 41; 2 43 42; 2 44 43; 2 45 44; 2 46 45; 2 47 46; 2 48 47; 2 49 48; 2 50 49; 2 27 50; 3 27 28; 3 28 4; 4 28 29; 4 29 5; 5 29 30; 5 30 6; 6 30 31; 6 31 7; 7 31 32; 7 32 8; 8 32 33; 8 33 9; 9 33 34; 9 34 10; 10 34 35; 10 35 11; 11 35 36; 11 36 12; 12 36 37; 12 37 13;13 37 38; 13 38 14; 14 38 39; 14 39 15; 15 39 40; 15 40 16; 16 40 41; 16 41 17; 17 41 42; 17 42 18; 18 42 43; 18 43 19; 19 43 44; 19 44 20; 20 44 45; 20 45 21; 21 45 46; 21 46 22; 22 46 47; 22 47 23; 23 47 48; 23 48 24; 24 48 49; 24 49 25; 25 49 50; 25 50 26; 26 50 27; 26 27 3]';figure(3);subplot(1,4,1);plotMesh(vertices, faces);for i=2:4subplot(1,4,i);[vertices, faces] = loopSubdivision(vertices, faces);plotMesh(vertices, faces);end% Example: Gridvertices = [-4 -40 0; -12 -4 0; 0 -14 0; 2 -04 0; 4 -4 0; -4 -20 0; -21 -26 0; 0 -2 0; 2 -2 0; 4 -2 0; -4 10 0; -2 10 0; 0 10 0; 2 0 20; 4 10 0; -4 2 0; -2 2 0; 20 2 0; 2 2 0; 4 2 0; -4 4 0; -2 4 0; 0 4 0; 2 4 0;4 4 0]';faces = [7 2 1; 1 6 7; 8 3 2; 2 7 8; 9 4 3; 3 8 9; 10 5 4; 4 9 10; 12 7 6; 6 11 12; 13 8 7; 7 12 13; 14 9 8; 8 13 14; 15 10 9; 9 14 15; 17 12 11; 11 16 17; 18 13 12; 12 17 18; 19 14 13; 13 18 19; 20 15 14;14 19 20; 22 17 16; 16 21 22; 23 18 17; 17 22 23; 24 19 18; 18 23 24; 25 20 19; 19 24 25]';figure(4);subplot(1,4,1);plotMesh(vertices, faces);for i=2:4subplot(1,4,i);[vertices, faces] = loopSubdivision(vertices, faces);plotMesh(vertices, faces);End(2)function plotMesh(vertices, faces)hold on;trimesh(faces', vertices(1,:), vertices(2,:), vertices(3,:));colormap gray(1);axis tight;axis square;axis off;view(3);End(3)function [newVertices, newFaces] = loopSubdivision(vertices, faces)% Mesh subdivision using the Loop scheme.%% Dimensions:% vertices: 3xnVertices% faces: 3xnFaces%% Author: Jesus Menaglobal edgeVertice;global newIndexOfVertices;newFaces = [];newVertices = vertices;nVertices = size(vertices,2);nFaces = size(faces,2);edgeVertice = zeros(nVertices, nVertices, 3);newIndexOfVertices = nV ertices;% ------------------------------------------------------------------------ %% create a matrix of edge-vertices and the new triangulation (newFaces).% computational complexity = O(3*nFaces)%% * edgeVertice(x,y,1): index of the new vertice between (x,y)% * edgeVertice(x,y,2): index of the first opposite vertex between (x,y) % * edgeVertice(x,y,3): index of the second opposite vertex between (x,y) %% 0riginal vertices: va, vb, vc, vd.% New vertices: vp, vq, vr.%% vb vb% / \ / \% / \ vp--vq% / \ / \ / \% va ----- vc -> va-- vr --vc% \ / \ /% \ / \ /% \ / \ /% vd vdfor i=1:nFaces[vaIndex, vbIndex, vcIndex] = deal(faces(1,i), faces(2,i), faces(3,i));vpIndex = addEdgeVertice(vaIndex, vbIndex, vcIndex);vqIndex = addEdgeVertice(vbIndex, vcIndex, vaIndex);vrIndex = addEdgeVertice(vaIndex, vcIndex, vbIndex);fourFaces = [vaIndex,vpIndex,vrIndex; vpIndex,vbIndex,vqIndex; vrIndex,vqIndex,vcIndex; vrIndex,vpIndex,vqIndex]';newFaces = [newFaces, fourFaces];end;% ------------------------------------------------------------------------ %% positions of the new verticesfor v1=1:nVertices-1for v2=v1:nVerticesvNIndex = edgeVertice(v1,v2,1);if (vNIndex~=0)vNOpposite1Index = edgeVertice(v1,v2,2);vNOpposite2Index = edgeVertice(v1,v2,3);if (vNOpposite2Index==0) % boundary casenewVertices(:,vNIndex) = 1/2*(vertices(:,v1)+vertices(:,v2));elsenewVertices(:,vNIndex) = 3/8*(vertices(:,v1)+vertices(:,v2)) + 1/8*(vertices(:,vNOpposite1Index)+vertices(:,vNOpposite2Index));end;end;end;end;% ------------------------------------------------------------------------ %% adjacent vertices (using edgeVertice)adjVertice{nVertices} = [];for v=1:nVerticesfor vTmp=1:nVerticesif (v<vTmp && edgeVertice(v,vTmp,1)~=0) || (v>vTmp && edgeVertice(vTmp,v,1)~=0)adjVertice{v}(end+1) = vTmp;end;end;end;% ------------------------------------------------------------------------ %% new positions of the original verticesfor v=1:nVerticesk = length(adjVertice{v});adjBoundaryVertices = [];for i=1:kvi = adjVertice{v}(i);if (vi>v) && (edgeVertice(v,vi,3)==0) || (vi<v) && (edgeVertice(vi,v,3)==0)adjBoundaryVertices(end+1) = vi;end;end;if (length(adjBoundaryVertices)==2) % boundary casenewVertices(:,v) = 6/8*vertices(:,v) + 1/8*sum(vertices(:,adjBoundaryVertices),2);elsebeta = 1/k*( 5/8 - (3/8 + 1/4*cos(2*pi/k))^2 );newVertices(:,v) = (1-k*beta)*vertices(:,v) + beta*sum(vertices(:,(adjVertice{v})),2);end;end;end% ---------------------------------------------------------------------------- %function vNIndex = addEdgeVertice(v1Index, v2Index, v3Index)global edgeVertice;global newIndexOfVertices;if (v1Index>v2Index) % setting: v1 <= v2vTmp = v1Index;v1Index = v2Index;v2Index = vTmp;end;if (edgeVertice(v1Index, v2Index, 1)==0) % new vertexnewIndexOfVertices = newIndexOfVertices+1;edgeVertice(v1Index, v2Index, 1) = newIndexOfVertices;edgeVertice(v1Index, v2Index, 2) = v3Index;elseedgeVertice(v1Index, v2Index, 3) = v3Index;end;vNIndex = edgeVertice(v1Index, v2Index, 1);return;end六、运行结果:七、结果分析:曲面的细分是徐徐逼近得到图形,并且更改坐标的数字,或更改曲面的顺序,所得到的图形是不同的。
小波分析实验报告
目的:比较传统的AR模型直接估计和经过小波去噪后的AR模型估计哪个更好数据:上海证券交易所A股股票从20031112 到2003112131 (共有240 个交易日) 每交易日的收盘价格。
过程:先选取数据,然后用AR模型直接估计得到一组估计值。
再用选取小波对数据进行分解重构,得到去噪后的数据,在对此数据用AR模型估计,
结论:
通过表3 我们可以看到本文提出的小波预测方法,在预测处理金融数据这类非平稳的时间序列时,同传统的预测方法相比较具有一定的可靠性,具有很好的应用前景。
通过表4 我们可以看到,当分解层数在3~4 层时,预测效果比较好。
实际过程中,如果待预测的时间序列数据量不是很大,我们分解层数一般采用3~4 层。
分工:
孟红波查找相关文献和数据
王骏建模,分析数据。
小波分析实验报告课程:小波分析姓名:学院:学号:一、实验目的:1、运用傅里叶变换知识对常用的基本函数做基本变换。
2、通过观察小波变换系数建立对小波变换及其有关性质的感性认识3、加深对因果滤波器的理解,并会判断因果滤波器的类型。
4、运用卷积公式对基本信号做滤波处理并作出分析,以加深理解。
5、熟悉Matlab中相关函数的用法。
二、实验原理:1、“小波”就是小区域、长度有限、均值为0的波形。
所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性,其振幅正负相间的震荡形式。
与Fourier变换相比,小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。
小波转换分成两个大类:离散小波变换(DWT)和连续小波转换(CWT)。
两者的主要区别在于,连续转换在所有可能的缩放和平移上操作,而离散转换采用所有缩放和平移值的特定子集。
小波变换的公式有内积形式和卷积形式,两种形式的实质都是一样的。
它要求的就是一个个小波分量的系数也就是“权”。
其直观意义就是首先用一个时窗最窄,频窗最宽的小波作为尺子去一步步地“量”信号,也就是去比较信号与小波的相似程度。
信号局部与小波越相似,则小波变换的值越大,否则越小。
当一步比较完成后,再将尺子拉长一倍,又去一步步地比较,从而得出一组组数据。
如此这般循环,最后得出的就是信号的小波分解(小波级数)。
当尺度及位移均作连续变化时,可以理解必将产生大量数据,作实际应用时并不需要这么多的数据,因此就产生了离散的思想。
将尺度作二进离散就得到二进小波变换,同时也将信号的频带作了二进离散。
当觉得二进离散数据量仍显大时,同时将位移也作离散就得到了离散小波变换。
2、二维离散小波变换常用函数三、实验内容:1. 对信号noissin 分别采用图形接口和命令行两种方式进行单尺度小波分解重构和多尺度小波分解重构层数为4,并显示各层低频高频图形,加以比较。
实验四一、实验目的理解小波阈值去噪法原理。
对所得的去噪效果进行分析。
二、实验要求在载入原始图片后,对图片进行含噪和消噪处理,再对所得的图片效果进行分析。
三、主要内容载入原始图片,对原始图片添加一个随机噪声,得出含噪图片。
用sym6小波对图像进行1层分解,设置一个全局阈值,对图像分解系数,将低频系数进行重构,得出消噪后的图像。
再与原图像,含噪图像一起进行分析比较。
运行代码如下clear all;load woman;subplot(2,2,1);image(X);colormap(map);xlabel('(a)原始图像');axis square;init=2055615866;randn('seed',init);x=X+48*randn(size(X));subplot(2,2,2);image(x);colormap(map);xlabel('(b)含噪图像');axis square;%用sym6小波对图像进行1层分解t1=wpdec2(x,1,'sym6');%设置一个全局阈值thr=10.358;%对图像分解系数t2=wpthcoef(t1,0,'s',thr);%对低频系数进行重构x1=wprcoef(t1,1);subplot(2,2,3);image(x1);运行结果四、思考体会小波去噪的根本任务是在小波域将信号的小波变换与噪声的小波变换有效的分离。
噪声的能量分布于整个小波域内,小波分解后,信号的小波系数幅值要大于噪声的系数幅值,也可以认为,幅值比较大的小波系数一般以信号为主,而比较小的系数在很大程度上是噪声。
于是,采用阈值的方法可把信号系数保留,而把大部分噪声系数减少至零。
将含噪信号在各尺度上进行小波分解,保留大尺度(低分辨率)下的全部系数,对于小尺度(高分辨率)下的小波系数,设定一个阈值,幅值不超过阈值的小波系数设置为零,幅值高于该阈值的小波系数或者完整保留,或者做相应的收缩处理,最后将处理后的小波系数利用逆小波变换进行重构,恢复出有效信号。
小波分析小结(小编整理)第一篇:小波分析小结小波分析的形成小波分析是一门数学分支,是继Fourier变换之后新的时频域分析工具。
小波理论的形成经历了三个发展阶段:Fourier变换阶段:Fourier变换是将信号在整个时间轴上进行积分,它将信号的时域特征和频域特征联系起来,分别进行分析。
设信号f(t),其Fourier变换为:F(ω)=⎰f(t)e-iωtdt-∞∞F(ω)确定了f(t)在整个时间域上的频谱特性。
但Fourier变换不能对信号从时域和频域结合起来分析,它是一种全局变换,在时间域上没有任何分辨率。
例:f(t)=1,(-2<=t<=2),其Fourier变换对应图如下:短时Fourier变换阶段:短时Fourier变换即加窗Fourier变换,其思想是把信号分成许多小的时间间隔,用Fourier分析每个时间间隔,以确定该间隔存在的频率,达到时频局部化目的。
其表达式为:Gf(ω,τ)=〈f(t),g(t-τ)ejωt〉=⎰f(t)g(t-τ)e-jωtdtR式中,g(t)为时限函数,即窗口函数,e-jωt起频限作用,Gf(ω,τ)大致反映了f(t)在τ时、频率为ω的信号成分含量。
由上式,短时Fourier变换能实现一定程度上的时频局部化,但窗口函数确定时,窗口大小和形状固定,所得时频分辨率单一。
小波分析阶段:为了克服上述缺点,小波变换应运而生。
小波变换在研究信号的低频成分时其窗函数在时间窗长度上增加,即在频率宽上减小;在研究信号的高频成分时其窗函数在时间窗长度上减小,而在频率宽上增加。
对信号可以进行概貌和细节上的分析。
小波的定义:∝(ω),若满足设ψ(t)∈L2(R)(为能量有限的空间信号),其Fourier变换为ψ容许条件:|ψ(ω)|2⎰-∞|ω|dω<+∞∞∝∝(0)=∞ψ(t)dt=0,说明ψ(t)具有波动则称ψ(t)为母小波,由容许条件可得:ψ⎰-∞性,在有限区间外恒为0或快速趋近于0.t-12以Marr小波ψ(t)=(1-t)e2为例,如下图:2π2将母小波进行伸缩平移所得小波系列称为子小波,定义式如下:ψb,a(t)=1t-bψ(),a>0aa其中a为伸缩因子,b为平移因子。
小波分析浅析—— 李继刚众所周知,以π2为周期的复杂的波都可以用以π2为周期的函数)(t f (模拟信号)来描述,它可以由形如)sin(n n nt A θ+的若干谐波叠加而成,因此,完全有理由认为)(t f 有如下的表现形式:∑∑∑∞=∞=∞=+=+=+=)sin cos ()cos sin cos sin ()sin()(n n n n n n n n n n n nt b nt a nt A nt A nt A t f θθθ为了确定上式中的系数n n b a ,,可以利用Fourier 变换,可以得到函数)(t f 的Fourier 级数,即⎪⎪⎪⎩⎪⎪⎪⎨⎧====++=⎰⎰∑--+∞=ππππππ.,2,1,sin )(1,,1,0,cos )(1),sin cos (2)(10 n ntdt t f b n ntdt t f a nt b nt a a t f n n n n n 如果函数以T 为周期,则通过对t 作Tw x Tt ππ2,2=∆=变换,可以得到函数的Fourier级数,即⎪⎪⎪⎩⎪⎪⎪⎨⎧=∆==∆=∆+∆+=⎰⎰∑--+∞=ππππ.,2,1,sin )(2,,1,0,cos )(2),sin cos (2)(10 n wtdt n t f T b n wtdt n t f T a wt n b wt n a a t f n n n n n 从时域角度来理解Fourier 级数,将}sin ,{cos wt n wt n ∆∆看作是具有频率w n ∆的谐波,则时域表现的函数)(t f 可分解为无穷个谐波之和。
从频域角度来理解Fourier 级数,因为)(t f 的频域范围是[)+∞∈,0w ,所以,可将w 轴用间距w ∆作离散分化,离散点w n ∆处对应着频率为w n ∆的谐波}sin ,{cos wt n wt n ∆∆,这样就可将时域函数)(t f 与谐波组成1-1对应关系,即+∞∆∆↔0}sin ,cos {)(wt n b wt n a t f n nFourier 分析在信号分析处理时,将复杂的时域信号转换到频域中,时域信号和频域信号组成Fourier 变换对,人们既可以在时域中分析信号,也可以在频域中细致的作出特殊分析。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==小波实验报告篇一:小波分析实验报告小波分析实验报告姓名班级:学号:成绩: 教师签名篇二:小波课程实验报告小波变换与信号时频分析实验报告院班级:姓名:学号:指导老师:哈尔滨工业大学二维图像信号的小波分解与重构1.1 实验目的结合小波多分辨率分解与重构原理,掌握利用MATLAB实现二维图像信号小波分解与重构的具体实现方法,重点理解二维图像信号分解与重构过程中小波基选择、图像信号边缘延拓方式对于分解和重构质量的影响,进而加深对于小波正交特性、完善重建特性的理解。
1.2 实验内容主要利用MATLAB提供的小波工具箱Wavelet Toolbox实现小波分解与重构,具体包括:(1)小波基的选择(要求三种以上小波基)(2)延拓方式的选择(3)分解过程中的抽样与非抽样(4)重构结果的分析,要求分析不同小波基、不同延拓方式、抽样/非抽样对于小波重构的影响(5)分析小波对于图像信号表示的方向特性1.3 实验步骤1. 小波变换Matlab实现编程实现图片的分解与重构,程序如下:dwtmode('zpd');X=imread('BARB.BMP');X=im2double(X);nbcol = 255;[cA1,cH1,cV1,cD1] = dwt2(X,'haar');cod_X=wcodemat(X,nbcol);cod_cA1=wcodemat(cA1,nbcol);cod_cH1=wcodemat(cH1,nbcol);cod_cV1=wcodemat(cV1,nbcol);cod_cD1=wcodemat(cD1,nbcol);dec2d = [cod_cA1,cod_cH1;cod_cV1,cod_cD1];X1=idwt2(cA1,cH1,cV1,cD1,'haar');cod_X1=wcodemat(X1,nbcol);subplot(221);imshow(X,[],'InitialMagnification','fit');title('orig image');subplot(222);imshow(dec2d,[],'InitialMagnification','fit');title('dec image');subplot(223);imshow(cod_cA1,[],'InitialMagnification','fit');title('appro image');subplot(224);imshow(cod_X1,[],'InitialMagnification','fit');title('syn image');在Zero-padding延拓方式下,分别取Haar、db3、sym小波基得到的图像分解与重构的结果如下:1) Haar小波基orig imagedec imageappro imagesyn image2) Db3小波基orig imagedec imageappro imagesyn image3) Sym3小波基orig imagedec imageappro imagesyn image在采用db4小波实现图像的分析和重构,分别采用四种不同的延拓方式,得到的的结果如下:1) extension mode为Zero-padding模式,分解与重构的结果为orig imagedec imageappro imagesyn image。
小波分析小结小波分析的形成小波分析是一门数学分支,是继Fourier 变换之后新的时频域分析工具。
小波理论的形成经历了三个发展阶段:Fourier 变换阶段:Fourier 变换是将信号在整个时间轴上进行积分,它将信号的时域特征和频域特征联系起来,分别进行分析。
设信号()f t ,其Fourier 变换为:()()i tF f t e dt ωω∞--∞=⎰()F ω确定了()f t 在整个时间域上的频谱特性。
但Fourier 变换不能对信号从时域和频域结合起来分析,它是一种全局变换,在时间域上没有任何分辨率。
例:()1,(22)f t t =-<=<=,其Fourier 变换对应图如下:短时Fourier 变换阶段:短时Fourier 变换即加窗Fourier 变换,其思想是把信号分成许多小的时间间隔,用Fourier 分析每个时间间隔,以确定该间隔存在的频率,达到时频局部化目的。
其表达式为:(,)(),()()()j t j t f RG f t g t e f t g t e dtωωωτττ-=〈-〉=-⎰式中,()g t 为时限函数,即窗口函数,j te ω-起频限作用,(,)fGωτ大致反映了()f t 在τ时、频率为ω的信号成分含量。
由上式,短时Fourier 变换能实现一定程度上的时频局部化,但窗口函数确定时,窗口大小和形状固定,所得时频分辨率单一。
小波分析阶段:为了克服上述缺点,小波变换应运而生。
小波变换在研究信号的低频成分时其窗函数在时间窗长度上增加,即在频率宽上减小;在研究信号的高频成分时其窗函数在时间窗长度上减小,而在频率宽上增加。
对信号可以进行概貌和细节上的分析。
小波的定义:设2()()t L R ψ∈ (为能量有限的空间信号),其Fourier 变换为µ()ψω,若满足容许条件:·2|()|||d ψωωω∞-∞<+∞⎰则称()t ψ为母小波,由容许条件可得:µ(0)()0t dt ψψ∞-∞==⎰,说明()t ψ具有波动性,在有限区间外恒为0或快速趋近于0.以Marr 小波222())2tt t e ψπ-=-为例,如下图:将母小波进行伸缩平移所得小波系列称为子小波,定义式如下:,()(),0b a t b t a a aψψ-=>其中a 为伸缩因子,b 为平移因子。
小波分析上机实验报告院系:电气工程及自动化学院学科:仪器科学与技术实验一小波分析在信号压缩中的应用一、试验目的(1)进一步加深对小波分析进行信号压缩的理解;(2)学习Matlab中有关信号压缩的相关函数的用法。
二、相关知识复习用一个给定的小波基对信号进行压缩后它意味着信号在小波阈的表示相对缺少了一些信息。
之所以能对信号进行压缩是因为对于规则的信号可以用很少的低频系数在一个合适的小波层上和一部分高频系数来近似表示。
利用小波变换对信号进行压缩分为以下几个步骤来完成:(1)进行信号的小波分解;(2)将高频系数进行阈值量化处理。
对从1 到N 的每一层高频系数都可以选择不同的阈值并且用硬阈值进行系数的量化;(3)对量化后的系数进行小波重构。
三、实验要求(1)对于某一给定的信号(信号的文件名为leleccum.mat),利用小波分析对信号进行压缩处理。
(2)给出一个图像,即一个二维信号(文件名为wbarb.mat),利用二维小波分析对图像进行压缩。
四、实验结果及程序(1)load leleccum%将信号装入Matlab工作环境%设置变量名s和ls,在原始信号中,只取2600-3100个点s = leleccum(2600:3100); ls = length(s);%用db3对信号进行3级小波分解[c,l] = wavedec(s, 3, 'db3');%选用全局阈值进行信号压缩thr = 35;[xd,cxd,lxd,perf0,perfl2] = wdencmp('gbl',c,l,'db3',3,thr,'h',1);subplot(2,1,1);plot(s);title('原是信号s');subplot(2,1,2);plot(xd);title('压缩后的信号xd');图1 实验1压缩结果图2 不同阈值下实验1压缩结果(2)clear %清除Matlab工作环境中现有的变量load wbarb;%显示图像subplot(221); image(X); colormap(map);title('原始图像');axis square;disp('压缩前图像X的大小')whos('X')%==================================================== %对图像用bior3.7小波进行2层小波分解[c,s] = wavedec2(X,2,'bior3.7');%提取小波分解结构中第1层的低频系数和高频系数ca1 = appcoef2(c,s,'bior3.7',1);ch1 = detcoef2('h',c,s,1); %小波分解结构中第1层的水平方向高频系数cv1 = detcoef2('v',c,s,1); %小波分解结构中第1层的垂直方向高频系数cd1 = detcoef2('d',c,s,1); %小波分解结构中第1层的斜线方向高频系数%分别对小波分解结构中第1层的各频率成份进行重构a1 = wrcoef2('a',c,s,'bior3.7',1);h1 = wrcoef2('h',c,s,'bior3.7',1);v1 = wrcoef2('v',c,s,'bior3.7',1);d1 = wrcoef2('d',c,s,'bior3.7',1);c1 = [a1,h1;v1,d1];%显示分解后各频率成分的信息subplot(222);image(c1);axis squaretitle('分解后低频和高频信息');%==================================================== %下面进行图像的压缩处理%保留小波分解结构中第1层的低频信息,进行图像压缩%第1层的低频信息为ca1,显示第1层的低频信息%首先对第1层信息进行量化编码ca1 = wcodemat(ca1,440,'mat',0);%改变图像的亮度ca1 = 0.5*ca1;subplot(223);image(ca1);colormap(map);axis square;title('第一次压缩图像');disp('第一次压缩图像的大小为:')whos('ca1')%==================================================== %保留小波分解第二层低频信息,进行图像的压缩,此时压缩比更大%第2层的低频信息即为ca2,显示第2层的低频信息ca2 = appcoef2(c,s,'bior3.7',2);%首先对第2层低频信息进行量化编码ca2 = wcodemat(ca2,440,'mat',0);%改变图像的亮度ca2 = 0.25*ca2;subplot(224);image(ca2);colormap(map);axis square;title('第2次压缩图像');disp('第2次压缩图像的大小为');whos('ca2')图3 实验2压缩结果五、实验分析及结论(1)根据实验1压缩结果分析得到,压缩后的信号保持了原有信号的轮廓信息,即低频信息,而大部分细节信息(高频信息)得到了消除。