示例#1
0
/** One-sided autocovariance.
 * @source R\_mth\_var.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #.Call( "RS_math_acvs", time.series, biased, recenter))#
 * @return             An R ... containing ...
 * @param time.series  Pointer to an R object containing ... time.series
 * @param biased       Pointer to an R object containing ... biased
 * @param recenter     Pointer to an R object containing ... recenter
 * @see fra_spectral_density_function_direct
*/
EXTERN_R SEXP RS_math_acvs(
 SEXP pr_time_series,
 SEXP pr_biased,
 SEXP pr_recenter )
{
  SEXP             pr_ret_result;
  boolean          biased;
  boolean          recenter;
  mutil_data_type  type;
  mutil_errcode    err;
  univ_mat         result;
  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_biased to biased */
  BOOLEAN_FROM_R( pr_biased, &biased );

  /* ... pr_recenter to recenter */
  BOOLEAN_FROM_R( pr_recenter, &recenter );

  /* Call the function */
  err = mthuniv_acvs(
    &time_series,
    biased,
    recenter,
    VPNULL,
    &result );
  CONVERT_MATRIX_AND_RETURN( mthuniv_acvs, &result, &pr_ret_result );
}
示例#2
0
/** The modulus maxima tree of a continuous wavelet transform.
 * @source RRS\_wav\_wtmm.c
 * @author Copyright (c), 1988, 2006 Insightful Corp.  All rights reserved.
 * @usage #.Call( "RS_wavelets_transform_continuous_wavelet_modulus_maxima_tree", wtmm.time.index, wtmm.scale.index, cwt, cwt.time, cwt.scale, bridge.gaps, n.octave.min, wtmm.strength.min))#
 * @return                   An R ... containing ...
 * @param wtmm.time.index    Pointer to an R object containing ... wtmm.time.index
 * @param wtmm.scale.index   Pointer to an R object containing ... wtmm.scale.index
 * @param cwt                Pointer to an R object containing ... cwt
 * @param cwt.time           Pointer to an R object containing ... cwt.time
 * @param cwt.scale          Pointer to an R object containing ... cwt.scale
 * @param bridge.gaps        Pointer to an R object containing ... bridge.gaps
 * @param n.octave.min       Pointer to an R object containing ... n.octave.min
 * @param wtmm.strength.min  Pointer to an R object containing ... wtmm.strength.min
 * @see wavuniv_transform_continuous_wavelet
 * @see wavuniv_transform_continuous_wavelet_modulus_maxima
*/
EXTERN_R SEXP RS_wavelets_transform_continuous_wavelet_modulus_maxima_tree(
 SEXP pr_wtmm_time_index,
 SEXP pr_wtmm_scale_index,
 SEXP pr_cwt,
 SEXP pr_cwt_time,
 SEXP pr_cwt_scale,
 SEXP pr_bridge_gaps,
 SEXP pr_n_octave_min,
 SEXP pr_wtmm_strength_min )
{
  boolean            bridge_gaps;
  double             n_octave_min;
  double             wtmm_strength_min;
  mat_set            result;
  memlist            list;
  mutil_data_type    type;
  mutil_errcode      err;
  SEXP               pr_ret_result;
  univ_mat           cwt;
  univ_mat           cwt_scale;
  univ_mat           cwt_time;
  univ_mat           wtmm_scale_index;
  univ_mat           wtmm_time_index;
  void              *VPNULL = NULL;

  /* Avoid lint warning */

  (void) whatssi;

  /* initialize memory list */

  MEMLIST_INIT( list );

  /* Conversion of input data ... */

  READ_MATRIX_REGISTER( pr_wtmm_time_index, &wtmm_time_index );
  READ_MATRIX_REGISTER( pr_wtmm_scale_index, &wtmm_scale_index );
  READ_MATRIX_REGISTER( pr_cwt, &cwt );
  READ_MATRIX_REGISTER( pr_cwt_scale, &cwt_scale );
  READ_MATRIX_REGISTER( pr_cwt_time, &cwt_time );

  /* ... pr_bridge_gaps to bridge_gaps */
  BOOLEAN_FROM_R( pr_bridge_gaps, &bridge_gaps );

  /* ... pr_n_octave_min to n_octave_min */
  DOUBLE_FROM_R( pr_n_octave_min, &n_octave_min );

  /* ... pr_wtmm_strength_min to wtmm_strength_min */
  DOUBLE_FROM_R( pr_wtmm_strength_min, &wtmm_strength_min );

  /* Call the function */
  err = wavuniv_transform_continuous_wavelet_modulus_maxima_tree(
    &(wtmm_time_index.mat.s32mat),
    &(wtmm_scale_index.mat.s32mat),
    &(cwt.mat.cpxmat),
    &(cwt_time.mat.dblmat),
    &(cwt_scale.mat.dblmat),
    bridge_gaps,
    n_octave_min,
    wtmm_strength_min,
    VPNULL,
    &result );
  CONVERT_MATSET_AND_RETURN( wavuniv_transform_continuous_wavelet_modulus_maxima_tree, &result, &pr_ret_result );
}
示例#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;
}
示例#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;
}