3 #include <gsl/gsl_sort.h>
4 #include <gsl/gsl_wavelet.h>
7 main (int argc, char **argv)
9 int i, n = 256, nc = 20;
10 double *data = malloc (n * sizeof (double));
11 double *abscoeff = malloc (n * sizeof (double));
12 size_t *p = malloc (n * sizeof (size_t));
16 gsl_wavelet_workspace *work;
18 w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4);
19 work = gsl_wavelet_workspace_alloc (n);
21 f = fopen (argv[1], "r");
22 for (i = 0; i < n; i++)
24 fscanf (f, "%lg", &data[i]);
28 gsl_wavelet_transform_forward (w, data, 1, n, work);
30 for (i = 0; i < n; i++)
32 abscoeff[i] = fabs (data[i]);
35 gsl_sort_index (p, abscoeff, 1, n);
37 for (i = 0; (i + nc) < n; i++)
40 gsl_wavelet_transform_inverse (w, data, 1, n, work);
42 for (i = 0; i < n; i++)
44 printf ("%g\n", data[i]);
48 gsl_wavelet_workspace_free (work);