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