【发布时间】:2018-10-24 11:01:30
【问题描述】:
我正在使用 MATLAB 编码器来生成处理复数的代码。 MATLAB 生成的复数类型的默认 typedef 为:
typedef double real_T;//real number
typedef struct {
real_T re;
real_T im;
} creal_T;//complex number
现在,我想用fftw3对数据进行fft,问题是在fftw3中复杂类型定义为:
typedef double fftw_complex[2];
来自“从 fftw 版本 2 升级”部分中的 fftw3 文档:
数据类型的主要区别在于 FFTW 2 中的 fftw_complex 是 定义为具有宏 c_re 和 c_im 的结构,用于访问 实部/虚部。 (这是二进制兼容 FFTW 3 的任何 机器除了一些旧的 Cray 单精度。) FFTW 3 的等效宏是:
#define c_re(c) ((c)[0]) #define c_im(c) ((c)[1])
我在这里遗漏了什么,还是有办法安全地将 creal_T 类型转换为相应的 fftw3 而无需实际逐个复制数据元素?
【问题讨论】:
标签: c matlab fftw matlab-coder