myfftw.h

使用FFTW的辅助结构体和函数

Author

Zhu Dengda (zhudengda@mail.iggcas.ac.cn)

Date

2025-08

Defines

FOR_EACH_FFTW_TYPE
GRT_SAFE_FFTW_FREE_PTR(ptr, s)
X(T, s, S)

Functions

GRT_FFTW_HOLDER *grt_create_fftw_holder_C2R_1D(const size_t nt, const real_t dt, const size_t nf_valid, const real_t df)

  • 初始化 FFTW_HOLDER 结构体指针,进行复数频谱到实数序列的逆变换 * *

参数:
  • nt[in] 时间序列点数 *

  • dt[in] 时间间隔 *

  • nf_valid[in] 有效频谱点数 *

  • df[in] 频率间隔 * *

返回:

FFTW_HOLDER 结构体指针 *

GRT_FFTW_HOLDER *grt_create_fftw_holder_R2C_1D(const size_t nt, const real_t dt, const size_t nf_valid, const real_t df)

初始化 FFTW_HOLDER 结构体指针,进行实数序列到复数频谱的正变换

void grt_reset_fftw_holder_zero(GRT_FFTW_HOLDER *fh)

将内部数据全部置零

void grt_destroy_fftw_holder(GRT_FFTW_HOLDER *fh)

清理函数:释放结构体内存,防止内存泄漏

void grt_naive_inverse_transform_double(GRT_FFTW_HOLDER *fh)

  • 最朴素的非均匀频域采样逆变换 * 严格按照傅里叶逆变换定义:g(t) = \int G(f) * e^(i2πft) df

GRT_FFTWF_HOLDER *grt_create_fftwf_holder_C2R_1D(const size_t nt, const real_t dt, const size_t nf_valid, const real_t df)

  • 初始化 FFTW_HOLDER 结构体指针,进行复数频谱到实数序列的逆变换 * *

参数:
  • nt[in] 时间序列点数 *

  • dt[in] 时间间隔 *

  • nf_valid[in] 有效频谱点数 *

  • df[in] 频率间隔 * *

返回:

FFTW_HOLDER 结构体指针 *

GRT_FFTWF_HOLDER *grt_create_fftwf_holder_R2C_1D(const size_t nt, const real_t dt, const size_t nf_valid, const real_t df)

初始化 FFTW_HOLDER 结构体指针,进行实数序列到复数频谱的正变换

void grt_reset_fftwf_holder_zero(GRT_FFTWF_HOLDER *fh)

将内部数据全部置零

void grt_destroy_fftwf_holder(GRT_FFTWF_HOLDER *fh)

清理函数:释放结构体内存,防止内存泄漏

void grt_naive_inverse_transform_float(GRT_FFTWF_HOLDER *fh)

  • 最朴素的非均匀频域采样逆变换 * 严格按照傅里叶逆变换定义:g(t) = \int G(f) * e^(i2πft) df

struct GRT_FFTW_HOLDER

Public Members

size_t nt
real_t dt
size_t nf_valid
size_t nf
real_t df
double *w_t
fftw_complex *W_f
fftw_plan plan
real_t f0
bool naive_inv
struct GRT_FFTWF_HOLDER

Public Members

size_t nt
real_t dt
size_t nf_valid
size_t nf
real_t df
float *w_t
fftwf_complex *W_f
fftwf_plan plan
real_t f0
bool naive_inv