📄 c4_6_1.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 + -