#include<iostream.h>
#include<math.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
#include "head.h"
void reverse_seq (double tp[2048],double tq[2048])
{
int lh=1024;
int j=lh;
int n1=2046;
double t=0;
for(int i=1;i<=n1;i++)
{
if(i<j)
{
t=tp[i];
tp[i]=tp[j];
tp[j]=t;
t=tq[i];
tq[i]=tq[j];
tq[j]=t;
}
int k=lh;
while(j>=k)
{
j=j-k;
k=k/2;
}
j+=k;
}
ofstream out4("\\c++\\reverse.dat");
if(!out4)
{
cout<<"创建文件失败,程序将退出!"<<endl;
return;
}
else
{
for(int r=0;r<2048;r++)
{
out4<<"tq["<<r<<"]="<<tq[r];
out4<<endl;
}
}
out4.close();
}
void fft()
{
double pi=3.1415926;
double c[4096],d[4096];
for(int t=0;t<2048;t++)
{
c[t]=0.0;
d[t]=0.0;
}
int m=11;
reverse_seq (a,b);
for(int l=1;l<=m;l++)
{
int B=(int)pow(2,l-1);
for(int j=0;j<=B-1;j++)
{
int p=j*int(pow(2,m-l));
for(int k=j;k<2048; k+=(int)(pow(2,l)))
{
double q=2*pi/2048;
double s=q*p;
double temp=cos(s);
s=sin(s);
c[k]=a[k];
d[k]=b[k];
c[k+B]=a[k+B];
d[k+B]=b[k+B];
a[k]=c[k]+temp*c[k+B]+s*d[k+B];
b[k]=d[k]+temp*d[k+B]-s*c[k+B];
a[k+B]=c[k]-temp*c[k+B]-s*d[k+B];
b[k+B]=d[k]-temp*d[k+B]+s*c[k+B];
}
}
}
ofstream out5("\\c++\\fft.dat");
if(!out5)
{
cout<<"创建文件失败,程序将退出!"<<endl;
return;
}
else
{
for(int r=0;r<2048;r++)
{
out5<<a[r]<<" "<<b[r];
out5<<endl;
}
}
out5.close();
}
void ifft()
{
double pi=3.1415926;
double c[4096],d[4096];
for(int t=0;t<2048;t++)
{
c[t]=0.0;
d[t]=0.0;
}
int m=11;
reverse_seq (a,b);
for(int l=1;l<=m;l++)
{
int B=(int)pow(2,l-1);
for(int j=0;j<=B-1;j++)
{
int p=j*int(pow(2,m-l));
for(int k=j;k<2048; k+=(int)(pow(2,l)))
{
double q=2*pi/2048;
double s=q*p;
double temp=cos(s);
s=sin(s);
c[k]=a[k];
d[k]=b[k];
c[k+B]=a[k+B];
d[k+B]=b[k+B];
a[k]=c[k]+temp*c[k+B]-s*d[k+B];
b[k]=d[k]+temp*d[k+B]+s*c[k+B];
a[k+B]=c[k]-temp*c[k+B]+s*d[k+B];
b[k+B]=d[k]-temp*d[k+B]-s*c[k+B];
}
}
}
ofstream out6("\\c++\\ifft.dat");
if(!out6)
{
cout<<"创建文件失败,程序将退出!"<<endl;
return;
}
else
{
for(int r=0;r<2048;r++)
{
a[r]=a[r]/2048;
b[r]=b[r]/2048;
out6<<a[r]<<" "<<b[r];
out6<<endl;
}
}
out6.close();
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
DFT+IDFT+FFT+IFFT的c++实现 void dft() { double pi=3.1415926; double Q=2*pi/2048; double s,c,ss; for(int k=0;k<=2047;k++) { A[k]=0;B[k]=0; for(int n=0;n<=2047;n++) { ss=Q*n*k; c=cos(ss); s=sin(ss); A[k]+=a[n]*c+b[n]*s; B[k]+=b[n]*c-a[n]*s; } } ofstream out3("\\c++\\dft.dat"); if(!out3) { cout<<"创建文件失败,程序将退出!"<<endl; return; } else { for(int i=0;i<2048;i++) { out3<<A[i]<<" "<<B[i]; out3<<endl; } } out3.close(); }
资源推荐
资源详情
资源评论
收起资源包目录
DFT+IDFT+FFT+IFFT.rar (33个子文件)
c++
fft.dat 54KB
idft.dat 48KB
reverse.dat 39KB
ft
ft.plg 763B
fft.cpp 2KB
head.h 199B
Debug
vc60.pdb 60KB
dtft.obj 17KB
ft.pch 239KB
ft.ilk 339KB
vc90.pdb 196KB
vc90.idb 219KB
vc60.idb 65KB
BuildLog.htm 5KB
text.obj 2KB
ft.exe.embed.manifest.res 2KB
ft.pdb 585KB
fft.obj 16KB
ft.exe 256KB
ft.exe.embed.manifest 2KB
ft.dsp 4KB
dtft.cpp 2KB
ft.vcproj 6KB
ft.suo 9KB
ft.ncb 57KB
ft.vcproj.hp-PC.hp.user 1KB
ft.dsw 512B
ft.opt 53KB
ft.sln 869B
text.cpp 166B
sgn.dat 33KB
ifft.dat 55KB
dft.dat 54KB
共 33 条
- 1
bsplover
- 粉丝: 224
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于ThinkPHP的轻量级PHP开发框架设计源码
- 基于CSS的响应式鲜花网站全屏效果设计源码
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
- 基于Node.js的Express框架与MySQL的后台管理系统设计源码
- 基于Java的Flink流批一体数据处理快速集成开发框架设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页