GSL实数快速傅里叶变换FFT

来源:互联网 发布:淘宝直通车消费 编辑:程序博客网 时间:2024/06/05 09:18
#include <stdio.h>#include <math.h>#include <gsl/gsl_errno.h>#include <gsl/gsl_fft_real.h>#include <gsl/gsl_fft_halfcomplex.h>#pragma comment(lib, "libgsl_d.lib")#pragma comment(lib, "libgslcblas_d.lib")intmain (void){  int i;  const int n = 100;//   double data[n];  double data[100];  gsl_fft_real_wavetable * real;  gsl_fft_halfcomplex_wavetable * hc;  gsl_fft_real_workspace * work;  for (i = 0; i < n; i++)    {      data[i] = 0.0;    }  for (i = n / 3; i < 2 * n / 3; i++)    {      data[i] = 1.0;    }  for (i = 0; i < n; i++)    {      printf ("%d: %e\n", i, data[i]);    }  printf ("\n");  work = gsl_fft_real_workspace_alloc (n);  real = gsl_fft_real_wavetable_alloc (n);  gsl_fft_real_transform (data, 1, n,                           real, work);  gsl_fft_real_wavetable_free (real);  for (i = 11; i < n; i++)    {      data[i] = 0;    }  hc = gsl_fft_halfcomplex_wavetable_alloc (n);  gsl_fft_halfcomplex_inverse (data, 1, n,                                hc, work);  gsl_fft_halfcomplex_wavetable_free (hc);  for (i = 0; i < n; i++)    {      printf ("%d: %e\n", i, data[i]);    }  gsl_fft_real_workspace_free (work);  return 0;}