Ejemplo n.º 1
0
/** The inverse maximum overlap discrete wavelet transform (IMODWT).
 * @source RS\_wav\_modw.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #itCall( "RS_wavelets_transform_maximum_overlap_inverse", modwt, filters, level, node, xformtype))#
 * @return         An R ... containing ...
 * @param modwt    Pointer to an R object containing ... modwt
 * @param filters  Pointer to an R object containing ... filters
 * @see wavuniv_filters_daubechies
 * @see wavuniv_transform_maximum_overlap
 * @see wavuniv_transform_maximum_overlap_packet
 * @see wavuniv_transform_packet_detail
*/
EXTERN_R SEXP RS_wavelets_transform_maximum_overlap_inverse(
 SEXP pr_modwt,
 SEXP pr_filters )
{
  SEXP             pr_ret_result;   
  mat_set          filters;         
  mat_set          modwt;           
  mutil_errcode    err;             
  univ_mat         result;          
  void             *VPNULL = NULL;  
  memlist          list;

  /* Avoid lint warning */
  (void) whatssi;

  /* initialize memory list */
  MEMLIST_INIT( list );

  /* Conversion of input data ... */

  /* ... pr_modwt to modwt */
  READ_MATSET_REGISTER( pr_modwt, MUTIL_DOUBLE, &modwt );

  /* ... pr_filters to filters */
  READ_MATSET_REGISTER( pr_filters, MUTIL_DOUBLE, &filters );

  /* Call the function */
  err = wavuniv_transform_maximum_overlap_inverse(
    &modwt,
    &filters,
    VPNULL,
    &result );
  CONVERT_MATRIX_AND_RETURN( wavuniv_transform_maximum_overlap_inverse, &result, &pr_ret_result );
}
Ejemplo n.º 2
0
/** Adaptive wavelet-based bootstrapping.
 * @source RS\_wav\_boot.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #.Call( "RS_wavelets_bootstrap", dwpt, filters, white.indices, n.realization))#
 * @return               An R ... containing ...
 * @param dwpt           Pointer to an R object containing ... dwpt
 * @param filters        Pointer to an R object containing ... filters
 * @param white.indices  Pointer to an R object containing ... white.indices
 * @param n.realization  Pointer to an R object containing ... n.realization
 * @see wavuniv_transform_packet_whitest
 * @see wavuniv_transform_packet
 * @see wavuniv_transform_packet_inverse
*/
EXTERN_R SEXP RS_wavelets_bootstrap(
 SEXP pr_dwpt,
 SEXP pr_filters,
 SEXP pr_white_indices,
 SEXP pr_n_realization )
{
  SEXP             pr_ret_result;   
  mat_set          dwpt;            
  mat_set          filters;         
  mat_set          result;          
  mutil_data_type  type;            
  mutil_errcode    err;             
  sint32           n_realization;   
  univ_mat         white_indices;   
  void             *VPNULL = NULL;  
  memlist          list;

  /* Avoid lint warning */
  (void) whatssi;

  /* initialize memory list */
  MEMLIST_INIT( list );

  /* Conversion of input data ... */

  /* ... pr_dwpt to dwpt */
  READ_MATSET_REGISTER( pr_dwpt, MUTIL_DOUBLE, &dwpt );

  /* ... pr_filters to filters */
  READ_MATSET_REGISTER( pr_filters, MUTIL_DOUBLE, &filters );

  /* ... pr_white_indices to white_indices */
  READ_MATRIX_REGISTER( pr_white_indices, &white_indices );

  /* ... pr_n_realization to n_realization */
  SINT32_FROM_R( pr_n_realization, &n_realization );

  /* Call the function */
  err = wavuniv_bootstrap(
    &dwpt,
    &filters,
    &white_indices,
    n_realization,
    VPNULL,
    &result );
  CONVERT_MATSET_AND_RETURN( wavuniv_bootstrap, &result, &pr_ret_result );
}
Ejemplo n.º 3
0
/** The maximum overlap discrete wavelet packet transform (MODWPT).
 * @source RS\_wav\_modw.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #itCall( "RS_wavelets_transform_maximum_overlap_packet", time.series, filters, n.level))#
 * @return             An R ... containing ...
 * @param time.series  Pointer to an R object containing ... time.series
 * @param filters      Pointer to an R object containing ... filters
 * @param n.level      Pointer to an R object containing ... n.level
 * @see wavuniv_transform_maximum_overlap
 * @see wavuniv_transform_maximum_overlap_inverse
 * @see wavuniv_transform_packet_detail
*/
EXTERN_R SEXP RS_wavelets_transform_maximum_overlap_packet(
 SEXP pr_time_series,
 SEXP pr_filters,
 SEXP pr_n_level )
{
  SEXP             pr_ret_result;   
  mat_set          filters;         
  mat_set          result;          
  mutil_data_type  type;            
  mutil_errcode    err;             
  sint32           n_level;         
  univ_mat         time_series;     
  void             *VPNULL = NULL;  
  memlist          list;

  /* Avoid lint warning */
  (void) whatssi;

  /* initialize memory list */
  MEMLIST_INIT( list );

  /* Conversion of input data ... */

  /* ... pr_time_series to time_series */
  READ_MATRIX_REGISTER( pr_time_series, &time_series );

  /* ... pr_filters to filters */
  READ_MATSET_REGISTER( pr_filters, MUTIL_DOUBLE, &filters );

  /* ... pr_n_level to n_level */
  SINT32_FROM_R( pr_n_level, &n_level );

  /* Call the function */
  err = wavuniv_transform_maximum_overlap_packet(
    &time_series,
    &filters,
    n_level,
    VPNULL,
    &result );
  CONVERT_MATSET_AND_RETURN( wavuniv_transform_maximum_overlap_packet, &result, &pr_ret_result );
}
Ejemplo n.º 4
0
/** Find the whitest set of DWPT crystals.
 * @source RS\_wav\_boot.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #.Call( "RS_wavelets_transform_packet_whitest", dwpt, significance, white.noise.test))#
 * @return                  An R ... containing ...
 * @param dwpt              Pointer to an R object containing ... dwpt
 * @param significance      Pointer to an R object containing ... significance
 * @param white.noise.test  Pointer to an R object containing ... white.noise.test
 * @see _wav_white_test
 * @see wavuniv_bootstrap
 * @see wavuniv_transform_packet
 * @see wavuniv_transform_packet_inverse
*/
EXTERN_R SEXP RS_wavelets_transform_packet_whitest(
 SEXP pr_dwpt,
 SEXP pr_significance,
 SEXP pr_white_noise_test )
{
  SEXP               pr_ret_result;     
  double             significance;      
  mat_set            dwpt;              
  mutil_errcode      err;               
  univ_mat           result;            
  void               *VPNULL = NULL;    
  wav_white_test     white_noise_test;
  memlist            list;

  /* Avoid lint warning */
  (void) whatssi;

  /* initialize memory list */
  MEMLIST_INIT( list );

  /* Conversion of input data ... */

  /* ... pr_dwpt to dwpt */
  READ_MATSET_REGISTER( pr_dwpt, MUTIL_DOUBLE, &dwpt );

  /* ... pr_significance to significance */
  DOUBLE_FROM_R( pr_significance, &significance );

  /* ... pr_white_noise_test to white_noise_test */
  err = wav_white_test_from_R( pr_white_noise_test, &white_noise_test );
  CHECK_CONVERSION( wav_white_test, pr_white_noise_test, &white_noise_test );

  /* Call the function */
  err = wavuniv_transform_packet_whitest(
    &dwpt,
    significance,
    white_noise_test,
    VPNULL,
    &result );
  CONVERT_MATRIX_AND_RETURN( wavuniv_transform_packet_whitest, &result, &pr_ret_result );
}
Ejemplo n.º 5
0
/** Extracts a discrete wavelet packet transform subset.
 * @source RS\_wav\_dwtc.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #itCall( "RS_wavelets_transform_packet_basis", dwpt, transform.indices, n.level))#
 * @return                   An R ... containing ...
 * @param dwpt               Pointer to an R object containing ... dwpt
 * @param transform.indices  Pointer to an R object containing ... transform.indices
 * @see wavuniv_transform_packet_convert_indices
 * @see wavuniv_transform_packet
 * @see wavuniv_transform_maximum_overlap_packet
 * @see _wav_dwpt_extra
 * @see wavuniv_transform_packet_inverse
*/
EXTERN_R SEXP RS_wavelets_transform_packet_basis(
 SEXP pr_dwpt,
 SEXP pr_transform_indices )
{
  SEXP             pr_ret_obj;         
  SEXP             tmpobj;
  mat_set          dwpt;               
  mat_set          result;             
  mutil_data_type  type;               
  mutil_errcode    err;                
  univ_mat         transform_indices;  
  void            *VPNULL = NULL;     
  wav_dwpt_extra   extra;  
  univ_mat         extra_atoms;
  univ_mat         extra_levelmap;
  sint32           i;
  memlist          list;

  /* Avoid lint warning */
  (void) whatssi;

  /* initialize memory list */
  MEMLIST_INIT( list );

  /* Conversion of input data ... */

  /* ... pr_dwpt to dwpt */
  READ_MATSET_REGISTER( pr_dwpt, MUTIL_DOUBLE, &dwpt );

  /* ... pr_transform_indices to transform_indices */
  READ_MATRIX_REGISTER( pr_transform_indices, &transform_indices );

  /* Call the function */
  err = wavuniv_transform_packet_basis(
    &dwpt,
    &transform_indices,
    VPNULL,
    &result,
    &extra );
  MUTIL_FREE_WARN( memlist, &list );
  if ( err ){
    PROBLEM "Problem calling wavuniv_transform_packet_basis() function" ERROR;
  }

  /* in the case where there are extra dwpt atoms that need to
     be stored, there will be memory allocated for the
     'extra' structure above. the easiest way to get this
     back to R is to pack everything into a list */

  if ( extra.nelem > 0 ){

    /* wrap universal matrix headers around extra matrices */
    err = matuniv_wrap_matrix( &extra_atoms, &(extra.atoms), MUTIL_DOUBLE);
    if ( err ){
      MUTIL_ERROR( "Unable to wrap universal matrix around extra atoms matrix" );
      PROBLEM "Problem creating R list" ERROR;
    }

    err = matuniv_wrap_matrix( &extra_levelmap, &(extra.levelmap), MUTIL_SINT32 );
    if ( err ){
      MUTIL_ERROR( "Unable to wrap universal matrix around extra levelmap matrix" );
      PROBLEM "Problem creating R list" ERROR;
    }

    /* create an R list object */
    PROTECT( pr_ret_obj = allocVector( VECSXP, result.nelem + 2 ) );

    /* create R matrix objects and pack the extra crystals into the list */

    for( i = 0; i < result.nelem; i++ ) {

      err = matuniv_to_R( &(result.mats[i]), (mutil_R_class_type) MUTIL_R_MATRIX, &tmpobj );
      if( err ){
	      PROBLEM "Problem adding DWPT crystal to R list" ERROR;
      }

      /*LINTED: cast OK, checked range */
      SET_VECTOR_ELT( pr_ret_obj, (int) i, tmpobj);
    }

    /* pack the extra atoms crystal into the R list */
    err = matuniv_to_R( &extra_atoms, (mutil_R_class_type) MUTIL_R_MATRIX, &tmpobj );
    if( err ){
      PROBLEM "Problem adding extra DWPT crystal to R list" ERROR;
    }

    /*LINTED: cast OK, checked range */
    SET_VECTOR_ELT( pr_ret_obj, (int) i++, tmpobj );

    /* finally, pack the levelmap vector into the list */
    err = matuniv_to_R( &extra_levelmap, (mutil_R_class_type) MUTIL_R_MATRIX, &tmpobj );
    if( err ){
      PROBLEM "Problem adding extra DWPT levelmap crystal to R list" ERROR;
    }

    /*LINTED: cast OK, checked range */
    SET_VECTOR_ELT( pr_ret_obj, (int) i, tmpobj );

    /* free the memory */

    MUTIL_FREE_WARN( matuniv, &extra_levelmap );
    MUTIL_FREE_WARN( matuniv, &extra_atoms );
    MUTIL_FREEALL_MATSET_WARN( &result );

    UNPROTECT(1);
  }
  else{

    err = matset_to_R_list( &result, &pr_ret_obj );
    MUTIL_FREEALL_MATSET_WARN( &result );
    if ( err ) {
      PROBLEM "Unable to convert output data to Splus format" ERROR;
    }
  }

  return pr_ret_obj;
}