📄 fft.cpp
字号:
// FFT.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "FFT.h"
int main(int argc, char* argv[])
{
//变量定义
float data[1024];
float RealOut[1024];
float ImagOut[1024];
float datare[1024];
float temp[1024];
//读取数据
FILE *in;
if((in = fopen("data.txt", "rt"))==NULL)
{
printf("Error read file \"data.txt\"\n");
exit(1);
}
for(int i=0;i<1024;i++)
{
if(fscanf(in, "%f\n", &data[i]))
{
;
}
else
{
fprintf(stderr, "Error reading an float from file.\n");
exit(1);
}
temp[i]=0;
}
fclose(in);
//付立叶变换
FFT (1024,0,data,NULL,RealOut,ImagOut);
//压缩处理
double re[50];
double im[50];
int pos[50];
double tem;
re[0]=RealOut[0];
im[0]=ImagOut[0];
tem=sqrt(powf(RealOut[0],2.0)+powf(ImagOut[0],2.0));
for(int index=0;index<50;index++)
{
for(i=1;i<1024;i++)
{
if(tem<sqrt(powf(RealOut[i],2.0)+powf(ImagOut[i],2.0)))
{
tem=sqrt(powf(RealOut[i],2.0)+powf(ImagOut[i],2.0));
re[index]=RealOut[i];
im[index]=ImagOut[i];
pos[index]=i;
}
}
RealOut[pos[index]]=0;
ImagOut[pos[index]]=0;
tem=sqrt(powf(RealOut[0],2.0)+powf(ImagOut[0],2.0));
}
//解压缩处理
for(i=0;i<1024;i++)
{
RealOut[i]=0.0;
ImagOut[i]=0.0;
}
for(i=0;i<50;i++)
{
RealOut[pos[i]]=re[i];
ImagOut[pos[i]]=im[i];
}
//付立叶逆变换
FFT (1024,1,RealOut,ImagOut,datare,temp);
if((in = fopen("result.txt", "wr"))==NULL)
{
exit(1);
}
for(i=0;i<1024;i++)
{
fprintf(in,"%E\t\t%E\t\t%E\t\t%E\t\t%E\n",data[i],datare[i],datare[i]-data[i],RealOut[i],ImagOut[i]);
}
fclose(in);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -