/* * thuc hien recontruction de tai tao lai tin hieu */ double *reWavelet(int _SAMPLE, int LFre, int HFre, double *_Data){ double *_Data_DWT; double *_Data_iDWT; int i; _Data_DWT = malloc(_SAMPLE*sizeof(double)); _Data_iDWT = malloc(_SAMPLE*sizeof(double)); //bien doi wavelet _Data_DWT = daub4_transform(_SAMPLE, _Data); //recontruction wavelet for(i=0;i<LFre;i++) _Data_DWT[i] = 0; for(i=HFre;i<_SAMPLE;i++) _Data_DWT[i] = 0; _Data_iDWT = daub4_transform_inverse(_SAMPLE, _Data_DWT); free(_Data_DWT); return _Data_iDWT; }
void test02 ( ) /******************************************************************************/ /* Purpose: TEST02 tests DAUB4_TRANSFORM and DAUB4_TRANSFORM_INVERSE. Licensing: This code is distributed under the GNU LGPL license. Modified: 28 April 2012 Author: John Burkardt */ { double a_first; double a_last; int i; int n; int seed; double *u; double *v; double *w; printf ( "\n" ); printf ( "TEST02\n" ); printf ( " DAUB4_TRANSFORM computes the DAUB4 transform of a vector.\n" ); printf ( " DAUB4_TRANSFORM_INVERSE inverts it.\n" ); /* Random data. */ n = 16; seed = 123456789; u = r8vec_uniform_01_new ( n, &seed ); v = daub4_transform ( n, u ); w = daub4_transform_inverse ( n, v ); printf ( "\n" ); printf ( " i U D4(U) D4inv(D4(U))\n" ); printf ( "\n" ); for ( i = 0; i < n; i++ ) { printf ( " %2d %10g %10g %10g\n", i, u[i], v[i], w[i] ); } free ( u ); free ( v ); free ( w ); /* Constant signal. */ n = 8; u = ( double * ) malloc ( n * sizeof ( double ) ); for ( i = 0; i < n; i++ ) { u[i] = 1.0; } v = daub4_transform ( n, u ); w = daub4_transform_inverse ( n, v ); printf ( "\n" ); printf ( " i U D4(U) D4inv(D4(U))\n" ); printf ( "\n" ); for ( i = 0; i < n; i++ ) { printf ( " %2d %10g %10g %10g\n", i, u[i], v[i], w[i] ); } free ( u ); free ( v ); free ( w ); /* Linear signal. */ n = 16; a_first = 1.0; a_last = ( double ) ( n ); u = r8vec_linspace_new ( n, a_first, a_last ); v = daub4_transform ( n, u ); w = daub4_transform_inverse ( n, v ); printf ( "\n" ); printf ( " i U D4(U) D4inv(D4(U))\n" ); printf ( "\n" ); for ( i = 0; i < n; i++ ) { printf ( " %2d %10g %10g %10g\n", i, u[i], v[i], w[i] ); } free ( u ); free ( v ); free ( w ); /* Quadratic data. */ n = 8; u = ( double * ) malloc ( n * sizeof ( double ) ); for ( i = 0; i < n; i++ ) { u[i] = pow ( ( double ) ( i - 5 ), 2 ); } v = daub4_transform ( n, u ); w = daub4_transform_inverse ( n, v ); printf ( "\n" ); printf ( " i U D4(U) D4inv(D4(U))\n" ); printf ( "\n" ); for ( i = 0; i < n; i++ ) { printf ( " %2d %10g %10g %10g\n", i, u[i], v[i], w[i] ); } free ( u ); free ( v ); free ( w ); return; }