• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-09-07
  • 语言: 其他
  • 标签: 小波变换  

资源简介

小波(Wavelet)这一术语,顾名思义,“小波”就是小区域、长度有限、均值为0的波形。所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性,其振幅正负相间的震荡形式。与Fourier变换相比,小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。有人把小波变换称为“数学显微镜”。

资源截图

代码片段和文件信息

// DWTHelp.cpp: implementation of the CDWTHelp class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “DWTHelp.h“
#include “math.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDWTHelp::CDWTHelp()
{
m_haar_filter=2;
}

CDWTHelp::~CDWTHelp()
{

}
//全局变量
LONG hBen hEnd h1Ben h1End hLen h1Len;
double  *h *g *h1 *g1;
void CDWTHelp::FilterSet_haar( )
{
hLen = 2;
h1Len = 2;
hBen = 0;
hEnd = 0;
h1Ben = 0;
h1End = 0;
if(h!=NULL) delete[] h;
h = new double[hLen];
if(h1!=NULL) delete[] h1;
h1 = new double[h1Len];
if(g!=NULL) delete[] g;
g = new double[h1Len];
if(g1!=NULL) delete[] g1;
g1 = new double[hLen];
for(int k=0;k {
h[k]=0.7071;
h1[k]=0.7071;
g[k]=0.7071;
g1[k]=0.7071;
}

}
void CDWTHelp::FilterSet_97(float t)
{
//好像长度分别为9/7,然后4/3是中点的位置.
hLen = 9;
h1Len = 7;
hBen = -4;
hEnd = 4;
h1Ben = -3;
h1End = 3;
if(h!=NULL) delete[] h;
h = new double[hLen];
if(h1!=NULL) delete[] h1;
h1 = new double[h1Len];
if(g!=NULL) delete[] g;
g = new double[h1Len];
if(g1!=NULL) delete[] g1;
g1 = new double[hLen];

    *h = (8*t*t*t-6*t*t+3*t)/(1+2*t)*(1/32.)*sqrt(2);
*(h+1) = (-16*t*t*t+20*t*t-12*t+3)/(1+2*t)*(1/32.)*sqrt(2);
*(h+2) = (2*t-3)/(1+2*t)*(1/8.)*sqrt(2);
*(h+3) = (16*t*t*t-20*t*t+28*t+5)/(1+2*t)*(1/32.)*sqrt(2);
*(h+4) = (-8*t*t*t+6*t*t+5*t+20)/(1+2*t)*(1/16.)*sqrt(2);
*(h+5) = *(h+3);
*(h+6) = *(h+2);
*(h+7) = *(h+1);
*(h+8) = *(h+0);

*h1 = -t/16.*sqrt(2);
*(h1+1) = (1-2*t)/16.*sqrt(2);
*(h1+2) = (t+4)/16.*sqrt(2);
*(h1+3) = (3+2*t)/8.*sqrt(2);
*(h1+4) = *(h1+2);
*(h1+5) = *(h1+1);
*(h1+6) = *(h1+0);


*g1 = *(h+8);
*(g1+1) = -*(h+7);
*(g1+2) =  *(h+6);
*(g1+3) = -*(h+5);
*(g1+4) =  *(h+4);
*(g1+5) = -*(h+3);
*(g1+6) =  *(h+2);
*(g1+7) = -*(h+1);
*(g1+8) =  *h;


*g = -*(h1+6);
*(g+1) =  *(h1+5);
*(g+2) = -*(h1+4);
*(g+3) =  *(h1+3);
*(g+4) = -*(h1+2);
*(g+5) =  *(h1+1);
*(g+6) = -*h1;
}

//小波逆变换函数
void CDWTHelp::ICWT2Dhelp(double * buffer LONG height LONG width LONG lv)
{
LONG ijk;
LONG nheightnwidth;

for (k=0; k {
nheight=height>>(lv-k-1);
nwidth=width>>(lv-k-1);

double *p;
p = new double [nheight];
for(j=0; j {
for (i=0; i *(p+i) = *(buffer+i*width+j);
ICWT1Dhelp(pnheighthBenhEndh1Benh1Endh1g1);
for(i=0; i *(buffer+i*width+j) = *(p+i);
}
delete []p;

double *p1;
p1 = new double [nwidth];
for (i=0; i {
for(j=0; j //*(p1+j) = *(buffer+i*height+j);
*(p1+j) = *(buffer+i*width+j);//-xia
ICWT1Dhelp(p1nwi

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10689  2008-11-19 21:04  dwt\DWTHelp.cpp

     文件       1301  2008-07-11 15:36  dwt\DWTHelp.h

     目录          0  2010-07-21 11:23  dwt

----------- ---------  ---------- -----  ----

                11990                    3


评论

共有 条评论