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

📄 c4_6_1.c

📁 同样是浮点型的fft算法一样为vc开发的
💻 C
字号:
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
#define pi 3.1415926536
#define  NN 2048

main()
{
  int i,j,k,m,N,r,s,t;
  static  float a0,a1,b0,b1,p,z,g;
  static  int a[NN];
  static  float c[NN];
  static  float   d[NN][2],w[NN][2];
  char th1[15];
  FILE   *fp,*fp1;
  a[0]=0;
  a[1]=1;
 printf("Input the data sum N\n N=");     
 scanf("%d",&N);
 printf(" Input the data r\n r=");        
 scanf("%d",&r);
 printf("input the power outfile name:");
                          	
				
 scanf("%s",th1);
 for(i=0;i<N;i++)
   {
a[2*i]=a[i]/2;
    a[2*i+1]=a[2*i]+N/2;
   }
 g=0.0;
 fp=fopen("s1.dat","r");
 for(i=0;i<N;i++)
 {
fscanf(fp,"%f\n",&c[i]);                
  d[a[i]][0]=c[i];
  d[i][1]=0;
  g=g+c[i];
 }

 fclose(fp);
 g=g/pow(2,r);
 for(i=0;i<N;i++)
   {
d[i][0]=d[i][0]-g;
   }
 for(i=0;i<r;i++)
 {
for(m=0;m<pow(2,i);m++)
       {
 w[m][0]=(cos(2*pi*m/pow(2, i+1)));     			
          w[m][1]=(-sin(2*pi*m/pow(2,i+1)));
       }
   for(j=0;j<N;j=j+pow(2,i+1))
    {
for(k=0;k<pow(2,i);k++)
            {   
s=(j+k);
                t=(j+k+pow(2,i));                  
                a0=(d[s][0]+w[k][0]*d[t][0]-w[k][1]*d[t][1])/2;
       			a1=(d[s][1]+w[k][0]*d[t][1]+w[k][1]*d[t][0])/2;
       			b0=(d[s][0]-w[k][0]*d[t][0]+w[k][1]*d[t][1])/2;
       			b1=(d[s][1]-w[k][0]*d[t][1]-w[k][1]*d[t][0])/2;
       			d[s][0]=a0;
       			d[s][1]=a1;
       			d[t][0]=b0;
       			d[t][1]=b1;
       		}
     }
   }
   fp=fopen(th1,"w");
   fp1=fopen("out2.dat","w");
   for(k=0;k<N;k++)
   {
p=(pow(d[k][0],2)+pow(d[k][1],2));      			
    z=sqrt(p);
    fprintf(fp1,"%f,%f\n",d[k][0],d[k][1]);
    fprintf(fp,"%f\n",z);
    }
    fclose(fp);
    fclose(fp1);
   }

⌨️ 快捷键说明

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