c代码实现dft算法
时间: 2023-10-02 10:07:08 浏览: 59
当然可以!下面是一个简单的C代码实现DFT(离散傅里叶变换)算法的示例:
```c
#include <stdio.h>
#include <math.h>
#include <complex.h>
#define PI 3.14159265358979323846
void dft(double complex x[], int N) {
double complex X[N];
for (int k = 0; k < N; k++) {
X[k] = 0;
for (int n = 0; n < N; n++) {
X[k] += x[n] * cexp(-I * 2 * PI * k * n / N);
}
}
for (int k = 0; k < N; k++) {
printf("X[%d] = %f + %fi\n", k, creal(X[k]), cimag(X[k]));
}
}
int main() {
double complex x[] = {1, 2, 3, 4};
int N = sizeof(x) / sizeof(x);
dft(x, N);
return 0;
}
```
在这个示例中,`dft` 函数接受一个复数数组 `x` 和数组长度 `N` 作为参数,并根据DFT算法计算离散傅里叶变换结果。在 `main` 函数中,我们定义了一个长度为4的复数数组 `x`,然后调用 `dft` 函数进行计算。
运行上述代码,将会输出每个频率分量的实部和虚部。这是一个基本的DFT算法实现,你可以根据具体需求进行修改和扩展。希望能对你有所帮助!