概念
- 离散余弦变换(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);
}