傅里叶变换c语言实现
时间: 2024-02-05 19:03:54 浏览: 129
以下是一个使用C语言实现的快速傅里叶变换(FFT)的例子:
```c
#include <stdio.h>
#include <complex.h>
#include <math.h>
#define PI 3.14159265358979323846
void fft(complex double* x, int n) {
if (n <= 1) {
return;
}
complex double even[n/2];
complex double odd[n/2];
for (int i = 0; i < n/2; i++) {
even[i] = x[2*i];
odd[i] = x[2*i + 1];
}
fft(even, n/2);
fft(odd, n/2);
for (int k = 0; k < n/2; k++) {
complex double t = cexp(-I * 2 * PI * k / n) * odd[k];
x[k] = even[k] + t;
x[k + n/2] = even[k] - t;
}
}
int main() {
int n = 8;
complex double x[] = {1, 2, 3, 4, 5, 6, 7, 8};
fft(x, n);
printf("FFT result: ");
for (int i = 0; i < n; i++) {
printf("%.2f + %.2fi ", creal(x[i]), cimag(x[i]));
}
printf("\n");
return 0;
}
```
这个例子中,我们首先定义了一个`fft`函数来实现快速傅里叶变换。然后,在`main`函数中,我们定义了一个长度为8的复数数组`x`,并调用`fft`函数对其进行变换。最后,我们打印出变换后的结果。
阅读全文