Exemple #1
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 );
}
Exemple #2
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 );
}
Exemple #3
0
/** The gain functions for Daubechies wavelet and scaling filters.
 * @source RS\_wav\_filt.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #itCall( "RS_wavelets_filters_daubechies_gain", filter.type, filter.length, num.levels, num.fft, normalize))#
 * @return               An R ... containing ...
 * @param filter.type    Pointer to an R object containing ... filter.type
 * @param filter.length  Pointer to an R object containing ... filter.length
 * @param num.levels     Pointer to an R object containing ... num.levels
 * @param num.fft        Pointer to an R object containing ... num.fft
 * @param normalize      Pointer to an R object containing ... normalize
 * @see _wav_filter_type
 * @see wavuniv_filters_daubechies
 * @see wavuniv_filters_zero_phase
*/
EXTERN_R SEXP RS_wavelets_filters_daubechies_gain(
 SEXP pr_filter_type,
 SEXP pr_filter_length,
 SEXP pr_num_levels,
 SEXP pr_num_fft,
 SEXP pr_normalize )
{
  SEXP             pr_ret_gain_frequency;
  SEXP             pr_ret_gain_scaling;
  SEXP             pr_ret_gain_wavelet;
  SEXP             pr_ret_obj;
  boolean          normalize;
  mutil_errcode    err;
  sint32           filter_length;
  sint32           num_fft;
  sint32           num_levels;
  univ_mat         gain_frequency;
  univ_mat         gain_scaling;
  univ_mat         gain_wavelet;
  void             *VPNULL = NULL;
  wav_filter_type  filter_type;
  memlist          list;

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

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

  /* Conversion of input data ... */

  /* ... pr_filter_type to filter_type */
  WAV_FILTER_TYPE_FROM_R( pr_filter_type, &filter_type );

  /* ... pr_filter_length to filter_length */
  SINT32_FROM_R( pr_filter_length, &filter_length );

  /* ... pr_num_levels to num_levels */
  SINT32_FROM_R( pr_num_levels, &num_levels );

  /* ... pr_num_fft to num_fft */
  SINT32_FROM_R( pr_num_fft, &num_fft );

  /* ... pr_normalize to normalize */
  BOOLEAN_FROM_R( pr_normalize, &normalize );

  /* Call the function */
  err = wavuniv_filters_daubechies_gain(
    filter_type,
    filter_length,
    num_levels,
    num_fft,
    normalize,
    VPNULL,
    &gain_frequency,
    &gain_wavelet,
    &gain_scaling );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Problem calling wavuniv_filters_daubechies_gain() function" );
  err = memlist_member_register( &list, &gain_frequency, MEMTYPE_MATUNIV);
  MEMLIST_FREE_ON_ERROR_REGISTER( err, &list );
  err = memlist_member_register( &list, &gain_wavelet, MEMTYPE_MATUNIV);
  MEMLIST_FREE_ON_ERROR_REGISTER( err, &list );
  err = memlist_member_register( &list, &gain_scaling, MEMTYPE_MATUNIV);
  MEMLIST_FREE_ON_ERROR_REGISTER( err, &list );

  /* create the output R object */

  err = matuniv_to_R( &gain_frequency, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_gain_frequency );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" );

  err = matuniv_to_R( &gain_wavelet, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_gain_wavelet );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" );

  err = matuniv_to_R( &gain_scaling, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_gain_scaling );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" );

  PROTECT( pr_ret_obj = allocVector( VECSXP, 3 ) );
  SET_VECTOR_ELT( pr_ret_obj, 0, pr_ret_gain_frequency );
  SET_VECTOR_ELT( pr_ret_obj, 1, pr_ret_gain_wavelet );
  SET_VECTOR_ELT( pr_ret_obj, 2, pr_ret_gain_scaling );
  UNPROTECT(1);

  /* free registered local memory */
  MUTIL_FREE_WARN( memlist, &list );

  return pr_ret_obj;
}
Exemple #4
0
/** Find the nearest neighbors of a multidimensional embedding of data in the phase space.
 * @source RS\_fra\_neig.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #.Call( "RS_fractal_neighbor_find", embedding, n.neighbor, distance.max, distance.metric, pdmatrix, sort.distances, orbital.lag))#
 * @return                 An R ... containing ...
 * @param embedding        Pointer to an R object containing ... embedding
 * @param n.neighbor       Pointer to an R object containing ... n.neighbor
 * @param distance.max     Pointer to an R object containing ... distance.max
 * @param distance.metric  Pointer to an R object containing ... distance.metric
 * @param pdmatrix         Pointer to an R object containing ... pdmatrix
 * @param sort.distances   Pointer to an R object containing ... sort.distances
 * @param orbital.lag      Pointer to an R object containing ... orbital.lag
 * @see _fra_distance_metric
 * @see frauniv_embed_neighbors
*/
EXTERN_R SEXP RS_fractal_neighbor_find(
 SEXP pr_embedding,
 SEXP pr_n_neighbor,
 SEXP pr_distance_max,
 SEXP pr_distance_metric,
 SEXP pr_sort_distances,
 SEXP pr_orbital_lag )
{
  SEXP                  pr_ret_neighbor_distances;  
  SEXP                  pr_ret_neighbor_indices;    
  SEXP                  pr_ret_obj;                 
  SEXP                  pr_ret_original_indices;    
  boolean               sort_distances;             
  double                distance_max;               
  fra_distance_metric   distance_metric;            
  mutil_data_type       type;                       
  mutil_errcode         err;                        
  sint32                n_neighbor;                 
  sint32                orbital_lag;                
  univ_mat              embedding;                  
  univ_mat              neighbor_distances;         
  univ_mat              neighbor_indices;           
  univ_mat              original_indices;           
  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_embedding, &embedding );

  /* ... pr_n_neighbor to n_neighbor */
  SINT32_FROM_R( pr_n_neighbor, &n_neighbor );

  /* ... pr_distance_max to distance_max */
  DOUBLE_FROM_R( pr_distance_max, &distance_max );

  /* ... pr_distance_metric to distance_metric */
  DISTANCE_METRIC_FROM_R( pr_distance_metric, &distance_metric );

  /* ... pr_sort_distances to sort_distances */
  BOOLEAN_FROM_R( pr_sort_distances, &sort_distances );

  /* ... pr_orbital_lag to orbital_lag */
  SINT32_FROM_R( pr_orbital_lag, &orbital_lag );

  /* Call the function */
  err = frauniv_neighbor_find(
    &embedding,
    n_neighbor,
    distance_max,
    distance_metric,
    (univ_mat*) NULL,
    sort_distances,
    orbital_lag,
    VPNULL,
    &original_indices,
    &neighbor_indices,
    &neighbor_distances );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Problem calling frauniv_neighbor_find() function" );
  err = memlist_member_register( &list, &original_indices, MEMTYPE_MATUNIV);
  MEMLIST_FREE_ON_ERROR_REGISTER( err, &list );
  err = memlist_member_register( &list, &neighbor_indices, MEMTYPE_MATUNIV);
  MEMLIST_FREE_ON_ERROR_REGISTER( err, &list );
  err = memlist_member_register( &list, &neighbor_distances, MEMTYPE_MATUNIV);
  MEMLIST_FREE_ON_ERROR_REGISTER( err, &list );

  /* create the output R object */
  err = matuniv_to_R( &original_indices, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_original_indices );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" );
  err = matuniv_to_R( &neighbor_indices, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_neighbor_indices );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" );
  err = matuniv_to_R( &neighbor_distances, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_neighbor_distances );
  MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" );

  PROTECT( pr_ret_obj = allocVector( VECSXP, 3 ) );
  SET_VECTOR_ELT( pr_ret_obj, 0, pr_ret_original_indices );
  SET_VECTOR_ELT( pr_ret_obj, 1, pr_ret_neighbor_indices );
  SET_VECTOR_ELT( pr_ret_obj, 2, pr_ret_neighbor_distances );
  UNPROTECT(1);
  
  /* free registered local memory */
  MUTIL_FREE_WARN( memlist, &list );

  return pr_ret_obj;
}
Exemple #5
0
/** Local Lyapunov spectrum estimation.
 * @source RS\_fra\_lyap.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #.Call( "RS_fractal_local_lyapunov_spectrum", time.series, embedding.dimension, time.lag, orbital.lag, sampling.interval, local.dimension, polynomial.order, global.reference, n.reference.local, metric, scale))#
 * @return                     An R ... containing ...
 * @param time.series          Pointer to an R object containing ... time.series
 * @param embedding.dimension  Pointer to an R object containing ... embedding.dimension
 * @param time.lag             Pointer to an R object containing ... time.lag
 * @param orbital.lag          Pointer to an R object containing ... orbital.lag
 * @param sampling.interval    Pointer to an R object containing ... sampling.interval
 * @param local.dimension      Pointer to an R object containing ... local.dimension
 * @param polynomial.order     Pointer to an R object containing ... polynomial.order
 * @param global.reference     Pointer to an R object containing ... global.reference
 * @param n.reference.local    Pointer to an R object containing ... n.reference.local
 * @param metric               Pointer to an R object containing ... metric
 * @param scale                Pointer to an R object containing ... scale
 * @see frauniv_embed
 * @see frauniv_dimension_correlation_summation
 * @see frauniv_dimension_information
*/
EXTERN_R SEXP RS_fractal_local_lyapunov_spectrum(
 SEXP pr_time_series,
 SEXP pr_embedding_dimension,
 SEXP pr_time_lag,
 SEXP pr_orbital_lag,
 SEXP pr_sampling_interval,
 SEXP pr_local_dimension,
 SEXP pr_polynomial_order,
 SEXP pr_global_reference,
 SEXP pr_n_reference_local,
 SEXP pr_metric,
 SEXP pr_scale )
{
  SEXP                  pr_ret_result;        
  double                sampling_interval;    
  fra_distance_metric   metric;               
  mat_set               result;               
  mutil_data_type       type;                 
  mutil_errcode         err;                  
  sint32                embedding_dimension;  
  sint32                local_dimension;      
  sint32                n_reference_local;    
  sint32                orbital_lag;          
  sint32                polynomial_order;     
  sint32                time_lag;             
  univ_mat              global_reference;     
  univ_mat              scale;                
  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_embedding_dimension to embedding_dimension */
  SINT32_FROM_R( pr_embedding_dimension, &embedding_dimension );

  /* ... pr_time_lag to time_lag */
  SINT32_FROM_R( pr_time_lag, &time_lag );

  /* ... pr_orbital_lag to orbital_lag */
  SINT32_FROM_R( pr_orbital_lag, &orbital_lag );

  /* ... pr_sampling_interval to sampling_interval */
  DOUBLE_FROM_R( pr_sampling_interval, &sampling_interval );

  /* ... pr_local_dimension to local_dimension */
  SINT32_FROM_R( pr_local_dimension, &local_dimension );

  /* ... pr_polynomial_order to polynomial_order */
  SINT32_FROM_R( pr_polynomial_order, &polynomial_order );

  /* ... pr_global_reference to global_reference */
  READ_MATRIX_REGISTER( pr_global_reference, &global_reference );

  /* ... pr_n_reference_local to n_reference_local */
  SINT32_FROM_R( pr_n_reference_local, &n_reference_local );

  /* ... pr_metric to metric */
  DISTANCE_METRIC_FROM_R( pr_metric, &metric );

  /* ... pr_scale to scale */
  READ_MATRIX_REGISTER( pr_scale, &scale );

  /* Call the function */
  err = frauniv_local_lyapunov_spectrum(
    &time_series,
    embedding_dimension,
    time_lag,
    orbital_lag,
    sampling_interval,
    local_dimension,
    polynomial_order,
    &global_reference,
    n_reference_local,
    metric,
    &scale,
    VPNULL,
    &result );
  CONVERT_MATSET_AND_RETURN( frauniv_local_lyapunov_spectrum, &result, &pr_ret_result );
}