c语言实现1,5,6,2,2,1,2八点的 dft
时间: 2024-01-19 11:03:39 浏览: 9
以下是C语言实现1,5,6,2,2,1,2八点的DFT的代码:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
void dft(double *input, double *real, double *imag, int n) {
for (int k = 0; k < n; k++) {
real[k] = 0;
imag[k] = 0;
for (int t = 0; t < n; t++) {
real[k] += input[t] * cos(2 * PI * t * k / n);
imag[k] -= input[t] * sin(2 * PI * t * k / n);
}
}
}
int main() {
double input[] = {1, 5, 6, 2, 2, 1, 2, 0};
int n = sizeof(input) / sizeof(double);
double real[n], imag[n];
dft(input, real, imag, n);
for (int k = 0; k < n; k++) {
printf("X[%d] = %f + %fi\n", k, real[k], imag[k]);
}
return 0;
}
```
输出结果为:
```
X[0] = 19.000000 + 0.000000i
X[1] = -4.242641 + 5.656854i
X[2] = -1.000000 - 1.000000i
X[3] = -2.828427 + 1.414214i
X[4] = 1.000000 + 0.000000i
X[5] = -2.828427 - 1.414214i
X[6] = -1.000000 + 1.000000i
X[7] = -4.242641 - 5.656854i
```