正变换
反变换
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.1415926
main()
{
int i,j,k;
int n=100;
double f=20.0;
double dt=0.005;
double df=1.0/(n*1.0)/dt;
printf(“dt=%f(s) df=%f(Hz)\n”,dt,df);
double input[n],output[n];
double real[n],image[n];
double amp[n];
for(i=0;i<n;i++)
{
input[i]=0.0;
output[i]=0.0;
real[i]=0.0;
image[i]=0.0;
amp[i]=0.0;
input[i]=sin(i*dt*f*2.0*PI);
printf("%f\n",input[i]);
}
printf("--------------------------\n");
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
{
real[j]=real[j]+input[i]*cos(2.0*PI*df*j*i*dt)*dt;
image[j]=image[j]-input[i]*sin(2.0*PI*df*j*i*dt)*dt;
}
amp[j]=sqrt(real[j]*real[j]+image[j]*image[j]);
}
for(i=0;i<n;i++)
{
printf("%f\n",amp[i]);
}
for(i=0;i<n;i++)
{
input[i]=0.0;
output[i]=0.0;
}
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
{
output[j]=output[j]+real[i]*cos(2.0*PI*df*j*i*dt)*df-image[i]*sin(2.0*PI*df*j*i*dt)*df;
input[j]=input[j]+real[i]*sin(2.0*PI*df*j*i*dt)*df+image[i]*cos(2.0*PI*df*j*i*dt)*df;
}
}
printf("--------------------------\n");
for(i=0;i<n;i++)
{
printf("%f\n",output[i]);
}
printf("-----------------------\n");
for(i=0;i<n;i++)
{
printf("%f\n",input[i]);
}
}