一维离散小波算法

void CDwt::Dwt1D(double *buffer, int buflen, int hBen, int hEnd, int h1Ben, int h1End, double *h, double *g) { double *p; int m,n,tempn; p = new double [buflen]; for (m=0; m<buflen; m++){="" *(p+m)="*(buffer+m);" *(buffer+m)="0;" }="" for="" (m="0;" m=""><(buflen>>1); m++){ for (n=hBen+2*m; n<=hEnd+2*m; n++){ tempn=n; /* 恒等延拓 */ /*if ( tempn<0 ) tempn=0; if ( tempn>= buflen ) tempn=buflen-1;*/ /* 周期延拓/ * if ( tempn<0 ) tempn=tempn+buflen; if ( tempn >buflen-1 ) tempn=tempn-buflen; /* 对称延拓 */ /**/if ( tempn<0 ) tempn=-tempn; if ( tempn >buflen-1 ) tempn=2*buflen-tempn-2; /* 0 填充 */ /*if ( tempn<0 ) tempn=0; if ( tempn >buflen-1 ) tempn=0;*/ *(buffer+m) = *(buffer+m)+*(p+tempn)*(*(h+n-2*m-hBen)); }// for n for (n=2*m+1-h1End; n<=2*m+1-h1Ben; n++){ tempn=n; /* 恒等延拓 */ /*if ( tempn<0 ) tempn=0; if ( tempn>= buflen ) tempn=buflen-1;*/ /* 周期延拓 /* if ( tempn<0 ) tempn=tempn+buflen; if ( tempn >buflen-1 ) tempn=tempn-buflen; /* 对称延拓 */ /**/if ( tempn<0 ) tempn=-tempn; if ( tempn >buflen-1 ) tempn=2*buflen-tempn-2; /* 0 填充 */ /*if ( tempn<0 ) tempn=0; if ( tempn >buflen-1 ) tempn=0;*/ *(buffer+m+(buflen>>1)) = *(buffer+m+(buflen>>1))+*(p+tempn)*(*(g+n-2*m-1+h1End)); }// for n }// for m delete []p; }  

你可能感兴趣的:(一维离散小波算法)