Exemplo n.º 1
0
CAMLprim value
ml_gsl_wavelet_transform_bigarray (value w, value dir, value b, value ws)
{
  struct caml_bigarray *bigarr = Bigarray_val(b);
  double *data  = bigarr->data;
  size_t n      = bigarr->dim[0];
  gsl_wavelet_transform (Wavelet_val (w), data, 1, n,
			 gsl_direction_val (dir), WS_val (ws));
  return Val_unit;
}
Exemplo n.º 2
0
CAMLprim value
ml_gsl_wavelet_transform (value w, value dir, value vf, value ws)
{
  double *data  = Double_array_val (Field (vf, 0)) + Long_val (Field (vf, 1));
  size_t n = Long_val (Field (vf, 2));
  size_t stride = Long_val (Field (vf, 3));
  check_array (vf);
  gsl_wavelet_transform (Wavelet_val (w), data, stride, n,
			 gsl_direction_val (dir), WS_val (ws));
  return Val_unit;
}
Exemplo n.º 3
0
t_int *wlet_perform(t_int *w)
{
	t_wlet *x = (t_wlet *)w[1];
	t_float *inL = (t_float *)w[2];
	t_float *outL = (t_float *)w[3];
	int n = (int)w[4];
	int i, j, result;
	
	long numTransforms = (long)n / (x->w_waveletLength);
	
	//double data = x->w_tmp;
	for(j = 0; j < numTransforms; j++){
		for(i = 0; i < x->w_waveletLength; i++)
			x->w_tmp[i] = (double)inL[i + (x->w_waveletLength * j)];
		
		result = gsl_wavelet_transform(x->w_wavelet, x->w_tmp, x->w_stride, x->w_waveletLength, x->w_direction, x->w_workspace);
		if(result) post("%d", result);
		for(i = 0; i < x->w_waveletLength; i++){
			outL[i + (x->w_waveletLength * j)] = (t_float)x->w_tmp[i];
		}
	}
			
	return (w + 5);
}