用c语言完成FFT测频
时间: 2023-04-11 20:02:12 浏览: 174
可以使用C语言中的FFT库来完成测频,例如FFTW库。使用该库可以方便地进行快速傅里叶变换,从而实现测频功能。以下是使用FFTW库进行FFT测频的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <fftw3.h>
#define N 1024 // 采样点数
#define Fs 1000 // 采样频率
int main()
{
double x[N]; // 采样数据
double f[N]; // 频率
fftw_complex y[N]; // FFT结果
fftw_plan plan; // FFT计划
// 生成采样数据
for (int i = 0; i < N; i++) {
x[i] = sin(2 * M_PI * i * 50 / Fs) + sin(2 * M_PI * i * 100 / Fs);
}
// 创建FFT计划
plan = fftw_plan_dft_r2c_1d(N, x, y, FFTW_ESTIMATE);
// 执行FFT计算
fftw_execute(plan);
// 计算频率
for (int i = 0; i < N; i++) {
f[i] = i * Fs / N;
}
// 输出结果
for (int i = 0; i < N / 2; i++) {
printf("%f Hz: %f\n", f[i], sqrt(y[i][0] * y[i][0] + y[i][1] * y[i][1]));
}
// 释放资源
fftw_destroy_plan(plan);
fftw_cleanup();
return 0;
}
阅读全文