首页 > 其他 > 详细

DFT's C

时间:2021-01-13 23:49:40      阅读:33      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define pi 3.1415926
#define N 16//16个点

typedef struct
{
    double real,imag;
} complex;//复数结构体

complex dft_out[8020];//单个点计算k
complex dft_one[8020];//单个点计算n
double amp[N];//DFT的结果

int main(void)
{
    int n,k;
    double xn[N];
    int q;
    //制造输入序列
    for(q=0;q<N;q++)
    {
        xn[q]=q;
    }
    //将DFT前的序列输出
    printf("您将要DFT的序列为:\n");
    for(q=0;q<N;q++)
    {
        printf("%f\n",xn[q]);
    }

    //两级循环
    for(k=0; k<N; k++)//k循环
    {
        for(n=0; n<N; n++)//n循环
        {
            //xn=0.6*sin(n*pi*100)+0.6*sin(n*pi*1000);//原信号
            dft_one[n].real=xn[n]*cos(2*pi/N*n*k);//实部
            dft_one[n].imag=xn[n]*sin(2*pi/N*n*k);//虚部
            dft_out[k].real+=dft_one[n].real;
            dft_out[k].imag+=dft_one[n].imag;//
        }
        amp[k]=sqrt(dft_out[k].real*dft_out[k].real+dft_out[k].imag*dft_out[k].imag);//正余弦合并(根号下平方之和)
        printf("%d  %f\n",k,amp[k]);
    }
    return 0;
}

技术分享图片

 参考:https://blog.csdn.net/yga_airspace/article/details/86561371

DFT's C

原文:https://www.cnblogs.com/ajiaoa/p/14274674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!