用c语言写一段傅里叶分析代码
时间: 2023-10-11 15:10:35 浏览: 81
以下是用 C 语言实现离散傅里叶变换(DFT)的代码示例:
```c
#include <stdio.h>
#include <math.h>
#define N 8 // 信号长度
// 复数结构体
typedef struct {
double real;
double imag;
} Complex;
// 计算 DFT
void dft(Complex* x, Complex* X) {
int k, n;
double arg;
Complex sum;
for (k = 0; k < N; k++) {
sum.real = 0;
sum.imag = 0;
for (n = 0; n < N; n++) {
arg = 2 * M_PI * n * k / (double)N;
sum.real += x[n].real * cos(arg) + x[n].imag * sin(arg);
sum.imag += -x[n].real * sin(arg) + x[n].imag * cos(arg);
}
X[k].real = sum.real;
X[k].imag = sum.imag;
}
}
int main() {
Complex x[N] = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}};
Complex X[N];
int k;
dft(x, X);
printf("DFT结果:\n");
for (k = 0; k < N; k++) {
printf("%d: %f + j%f\n", k, X[k].real, X[k].imag);
}
return 0;
}
```
该代码定义了一个复数结构体,然后实现了一个计算离散傅里叶变换(DFT)的函数 dft。在主函数中,我们定义了一个长度为 8 的信号数组 x,然后调用 dft 函数计算 DFT 的结果 X,并输出到控制台。
阅读全文