傅里叶变换C语言实现
时间: 2023-11-30 11:04:03 浏览: 94
傅里叶变换是一种信号处理方法,它可以将时域信号转换为频域信号。在C语言中,可以使用数学函数库(如FFTW)或手写代码来实现傅里叶变换。手写代码实现的话,可以使用DFT(离散傅里叶变换)或FFT(快速傅里叶变换)算法。DFT算法的复杂度是O(N^2),而FFT算法的复杂度是O(NlogN),因此通常更快。
以下是一个使用DFT算法实现傅里叶变换的示例代码:
#include <complex.h>
#include <math.h>
#include <stdio.h>
#define N 8
void dft(double complex x[N], double complex y[N])
{
for (int k = 0; k < N; ++k)
{
y[k] = 0;
for (int n = 0; n < N; ++n)
{
double complex c = cos(2 * M_PI * k * n / N) - sin(2 * M_PI * k * n / N) * I;
y[k] += x[n] * c;
}
}
}
int main()
{
double complex x[N] = {1, 2, 3, 4, 5, 6, 7, 8};
double complex y[N];
dft(x, y);
printf("DFT result:\n");
for (int k = 0; k < N; ++k)
{
printf("%.2f + %.2fi\n", creal(y[k]), cimag(y[k]));
}
return 0;
}
阅读全文