⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dft.c

📁 DFT算法的实现的一种C语言源程序
💻 C
字号:

 #include <math.h>
 #include <stdio.h>
 #define PI 3.1415926
 #define a -0.6


 short   DFT(short dir,long m,double x1[],double y1[],double x2[],double y2[])
  {   
        long   i,k;   
        double   arg;   
        double   cosarg,sinarg;
        int TRUE=1;
          
        for (i=0;i<m;i++)
        {   
              arg=-dir*2.0*PI*i/(double)m;
              for (k=0;k<m;k++)
              {
                    cosarg=cos(k*arg);
                    sinarg=sin(k*arg);
                    x2[i]+=(x1[k]*cosarg-y1[k]*sinarg);
                    y2[i]+=(x1[k]*sinarg+y1[k]*cosarg);
              }   
        }   
          
        /*   Copy   the   data   back   */   
        if (dir==1)
        {
              for (i=0;i<m;i++)
              {   
                    x1[i]=x2[i]/m;
                    y1[i]=y2[i]/m;
              }   
        }
        else
        {   
              for   (i=0;i<m;i++)
              {   
                    x1[i]=x2[i];
                    y1[i]=y2[i];
              }   
        }   
          
        return(TRUE);   
  }   


  main()
  {
        FILE *fp;
        short   dir1=1;
        int j,i;
        long   n;
        double    real1[100],image1[100];
        double    real2[100],image2[100];


        fp=fopen("C:\\DataDFT.txt","wb");

        /*Input the number of the x(n)*/

        scanf("%d",&n);

        /*Input the value of the x(n)*/

        for(j=0;j<n;j++)
        {
            real1[j]=a;
            for(i=0;i<j;i++)
             {
              real1[j]*=real1[j];
             }

            image1[j]=0;
        }

        for(j=0;j<n;j++)
        {
            printf("x1[%d]=%lf+j*%lf\n",j,real1[j],image1[j]);
            fprintf(fp,"x1[%d]=%lf+j*%lf\n",j,real1[j],image1[j]);
        }
        getch();

        for(j=0;j<n;j++)
        {
            real2[j]=0;
            image2[j]=0;
        }

        DFT(dir1,n,real1,image1,real2,image2);

        for(j=0;j<n;j++)
        {
            printf("x1[%d]=%lf+j*%lf\n",j,real1[j],image1[j]);
            fprintf(fp,"x1[%d]=%lf+j*%lf\n",j,real1[j],image1[j]);
        }
        fclose(fp);
        getch();
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -