dwt.c

来自「math library from gnu」· C语言 代码 · 共 55 行

C
55
字号
#include <stdio.h>#include <math.h>#include <gsl/gsl_sort.h>#include <gsl/gsl_wavelet.h>intmain (int argc, char **argv){  int i, n = 256, nc = 20;  double *data = malloc (n * sizeof (double));  double *abscoeff = malloc (n * sizeof (double));  size_t *p = malloc (n * sizeof (size_t));  FILE * f;  gsl_wavelet *w;  gsl_wavelet_workspace *work;  w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4);  work = gsl_wavelet_workspace_alloc (n);  f = fopen (argv[1], "r");  for (i = 0; i < n; i++)    {      fscanf (f, "%lg", &data[i]);    }  fclose (f);  gsl_wavelet_transform_forward (w, data, 1, n, work);  for (i = 0; i < n; i++)    {      abscoeff[i] = fabs (data[i]);    }    gsl_sort_index (p, abscoeff, 1, n);    for (i = 0; (i + nc) < n; i++)    data[p[i]] = 0;    gsl_wavelet_transform_inverse (w, data, 1, n, work);    for (i = 0; i < n; i++)    {      printf ("%g\n", data[i]);    }    gsl_wavelet_free (w);  gsl_wavelet_workspace_free (work);  free (data);  free (abscoeff);  free (p);  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?