Beispiel #1
0
/*
 * 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;
}