FFTW 库使用

来源:互联网 发布:数据可视化分析 编辑:程序博客网 时间:2024/05/16 15:28

官方网址
官方文档链接
中文资料-百度文库

概念

  • 离散余弦变换(DCT for Discrete Cosine Transform)
  • 离散正弦变换(DST for Discrete Sine Transform)

支持数据

  • 多维维数
  • 多维复数

fft计划(事务)

  • 执行计划

    void fftw_execute(const fftw_plan plan);

  • 删除计划

    void fftw_destroy_plan(fftw_plan plan);

  • 清除所有计划(不建议使用)

    void fftw_cleanup(void);

  • 打印计划

    void fftw_fprint_plan(const fftw_plan plan, FILE *output_file);
    void fftw_print_plan(const fftw_plan plan);
    char *fftw_sprint_plan(const fftw_plan plan);

计划属性

  • FFTW_ESTIMATE

    使用一个启发式(次优)计划替代真实计算

  • FFTW_MEASURE

    通过执行几种fft算法找到最优计划

  • FFTW_PATIENT

    同FFTW_MEASURE,适合更大数据量

  • FFTW_EXHAUSTIVE

    同FFTW_PATIENT,适合更大数据量

  • FFTW_WISDOM_ONLY

    智慧模式

  • FFTW_DESTROY_INPUT

    允许输出空间覆盖输入空间

  • FFTW_PRESERVE_INPUT

    输入空间在转换过程中不能被改变

正向fft

fftw_plan fftw_plan_dft_r2c(int rank, const int *n,                            double *in, fftw_complex *out,                            unsigned flags);

反向fft

fftw_plan fftw_plan_dft_c2r(int rank, const int *n,                            fftw_complex *in, double *out,                            unsigned flags);

实例代码

#include <fftw3.h> … { fftw_complex *in, *out; fftw_plan p;  … in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);  p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);  … fftw_execute(p); /* repeat as needed */  … fftw_destroy_plan(p); fftw_free(in); fftw_free(out);  }
原创粉丝点击