安装fft库
FFT提取特征 C++源码
在C++中,可以使用FFTW(Fastest Fourier Transform in the West)库来进行FFT操作。以下是一个简单的例子,展示如何使用FFTW进行FFT操作:
首先,你需要安装FFTW库。在Linux上,你可以通过包管理器安装,例如在Ubuntu上使用:
sudo apt-install libfftw3-dev
C++代码
#include <iostream>
#include <fftw3.h>
#include <cmath>
int main() {
int N = 8; // 设置样本数为8
// 分配输入数组和输出数组
fftw_complex *in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
fftw_complex *out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
// 创建一个FFT计划
fftw_plan plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
// 初始化输入数据(这里使用简单的1, 0, 1, 0...序列作为示例)
for (int i = 0; i < N; i++) {
in[i][0] = i % 2; // 实部
in[i][1] = 0; // 虚部
}
// 执行FFT
fftw_execute(plan);
// 输出FFT结果
for (int i = 0; i < N; i++) {
std::cout << "out[" << i << "] = " << out[i][0] << " + " << out[i][1] << "i" << std::endl;
}
// 清理分配的内存
fftw_destroy_plan(plan);
fftw_free(in);
fftw_free(out);
return 0;
}
g++ fft.cpp -o fft -lm -lstdc++ -lfftw3
./fft
out[0] = 4 + 0i
out[1] = 0 + 0i
out[2] = 0 + 0i
out[3] = 0 + 0i
out[4] = -4 + 0i
out[5] = 0 + 0i
out[6] = 0 + 0i
out[7] = 0 + 0i
1003

被折叠的 条评论
为什么被折叠?



