/*
* dft.c
*
* Created on: 2018年5月16日
* Author: ChiWang
*/
#include <stdio.h>
#include <math.h>
#include "fftw3.h"
#define N 16 //采样个数
#define PI 3.1415926535
typedef struct //complex数据类型,用于实现傅里叶运算
{
float r;
float i;
}complex;
complex dft_out[N]; //complex out data
float dft_in[N]; //sample in data
float amp[N]; //real_amp=amp*2/N
void DFT_Cal(void)
{
int i = 0;
int n = 0;
complex part[N];
for(i=0; i<N; i++)
{
dft_out[i].r = 0;
dft_out[i].i = 0;
for(n=0; n<N; n++)
{
//欧拉公式 cos(x)-jsin(x)
part[n].r = cos(2*PI*i/N*n)*dft_in[n];
part[n].i = -sin(2*PI*i/N*n)*dft_in[n];
dft_out[i].r += part[n].r;
dft_out[i].i += part[n].i;
}
amp[i] = sqrt(dft_out[i].r * dft_o
C语言直接DFT和FFTW两种方式实现离散傅里叶变换
最新推荐文章于 2023-05-27 06:13:01 发布