c语言离散傅里叶变换代码
时间: 2023-11-25 13:07:39 浏览: 90
离散傅里叶变换(Discrete Fourier Transform,DFT)是一种将时域离散信号转换为频域离信号的方法。下面是一个简单的C语言离散傅里叶变换代码:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
void DFT(double *x, double *y, int N)
{
int k, n;
double re, im;
for (k = 0; k < N; k++) {
re = 0.0;
im = 0.0;
for (n = 0; n < N; n++) {
re += x[n] * cos(2 * PI * k * n / N);
im -= x[n] * sin(2 * PI * k * n / N);
}
y[k] = sqrt(re * re + im * im);
}
}
int main()
{
double x[] = {1, 2, 3, 4, 5, 6, 7, 8};
double y[8];
int i;
DFT(x, y, 8);
for (i = 0; i < 8; i++) {
printf("%f\n", y[i]);
}
return 0;
}
```
这个代码实现了一个简单的离散傅里叶变换,输入信号为x,输出信号为y。其中N为信号的长度,re和im分别为实部和虚部。在循环中,计算每个频率的幅度,最后将结果存储在y数组中。
阅读全文