C++ 傅里叶变换函数
时间: 2023-08-29 19:13:41 浏览: 243
C++ 中可以使用 FFTW 库实现傅里叶变换,以下是一个简单的示例代码:
```c++
#include <iostream>
#include <fftw3.h>
int main() {
// 定义输入数据
double in[] = {1.0, 2.0, 3.0, 4.0};
int N = sizeof(in) / sizeof(double);
// 分配内存空间
fftw_complex* out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
// 创建 FFT 执行计划
fftw_plan plan = fftw_plan_dft_r2c_1d(N, in, out, FFTW_ESTIMATE);
// 执行傅里叶变换
fftw_execute(plan);
// 输出结果
for (int i = 0; i < N; i++) {
std::cout << out[i][0] << " + " << out[i][1] << "i" << std::endl;
}
// 释放内存空间
fftw_destroy_plan(plan);
fftw_free(out);
return 0;
}
```
在上述代码中,我们首先定义了一个长度为 4 的输入数据 `in`,然后分配了一个长度为 `N` 的复数数组 `out`。接着,我们使用 `fftw_plan_dft_r2c_1d` 函数创建了一个 FFT 执行计划,并使用 `fftw_execute` 函数执行了傅里叶变换。最后,我们输出了变换后的结果,并释放了内存空间。
需要注意的是,FFTW 库支持多种傅里叶变换类型和选项,具体使用方式可以参考官方文档。
阅读全文