问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求快速傅里叶变换的算法实现,C/C++/JAVA都行,要求适用于所有的整数,谢谢!

发布网友 发布时间:2022-05-16 21:44

我来回答

1个回答

热心网友 时间:2023-09-12 06:53

#include<graphics.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<dos.h>

float ar[2048],ai[2048];
float a[4100];

void testdata()
{
int i;
for(i=0;i<512;i++)
{
ar[i]=50*cos(i*3.14159/32)+60*cos(i*3.14159/16)+53*cos(i*3.14159/64)+24*cos(i*3.14159/8)+10*cos(i*3.14159/128);
ai[i]=0;
}
}

void fft(int nn,int t)
{
int n1,n2,i,j,k,l,m,s,l1;
float t1,t2,x,y;
float w1,w2,u1,u2,z;
float pi=3.14159;
switch(nn)
{
case 2048: s=11; break;
case 1024: s=10; break;
case 512: s=9; break;
case 256: s=8; break;
}

n1=nn/2; n2=nn-1;
j=1;
for(i=1;i<=nn;i++)
{
a[2*i]=ar[i-1];
a[2*i+1]=ai[i-1];
}
for(l=1;l<n2;l++)
{
if(l<j)
{
t1=a[2*j];
t2=a[2*j+1];
a[2*j]=a[2*l];
a[2*j+1]=a[2*l+1];
a[2*l]=t1;
a[2*l+1]=t2;
}
k=n1;
while (k<j)
{
j=j-k;
k=k/2;
}
j=j+k;
}
for(i=1;i<=s;i++)
{
u1=1;
u2=0;
m=(1<<i);
k=m>>1;
w1=cos(pi/k);
w2=t*sin(pi/k);
for(j=1;j<=k;j++)
{
for(l=j;l<nn;l=l+m)
{
l1=l+k;
t1=a[2*l1]*u1-a[2*l1+1]*u2;
t2=a[2*l1]*u2+a[2*l1+1]*u1;
a[2*l1]=a[2*l]-t1;
a[2*l1+1]=a[2*l+1]-t2;
a[2*l]=a[2*l]+t1;
a[2*l+1]=a[2*l+1]+t2;
}
z=u1*w1-u2*w2;
u2=u1*w2+u2*w1;
u1=z;
}
}
for(i=1;i<=nn/2;i++)
{
ar[i]=a[2*i+2]/nn;
ai[i]=-a[2*i+3]/nn;
a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]);
}
}

int main ()
{
int i;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
setfillstyle(SOLID_FILL,WHITE);
bar(0,0,639,479);
//模拟测试数据
testdata();
//波形显示
setcolor(BLACK);
line(10,119,550,119); // x轴
line(10,10,10,239); // y轴
setcolor(BLUE);
for(i=0;i<511;i++)
line(i+10,119-ar[i],i+10+1,119-ar[i+1]);
//FFT
fft(512,-1);

//频谱显示
setcolor(BLACK);
line(10,459,550,459); // x轴
line(10,259,10,459); // y轴
setcolor(RED);
for(i=0;i<256;i++)
line(2*i+10,459-a[i],2*i+10,459);
getch();
closegraph();
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑分辨率设置多少合适笔记本电脑分辨率多少最佳 各尺寸笔记本电脑的最佳分辨率 2022年高考480到510分能上山东科技大学吗 朋友借了我一万块钱,现在坐牢了怎么还钱? 天王星和海王星虽然看似一对姊妹星,但还是有区别 ...值得收藏吗?现在分别只都多少钱,照片上有一个铜币的 谁能告诉我这是一枚什么样的铜币,值不值钱? 有谁知道这铜币值不值钱,懂家告诉我一下!谢谢 有谁知道这个铜钱的来历 可以进行异地公积金贷款吗 傅里叶变换如何解决大整数乘法? 希望能给出思路,最好能用JAVA语言描述一下,万分感谢 用JAVA编写快速傅里叶变换,要求有界面,有图形展示, 手机充电,里边有嗡嗡嗡声音是怎么回事怎么处理? 怎么知道自己得了内痔!!?又看不到,一定要到医院检查才查得出来吗?在贵阳,哪家肛肠医院可以查的? ⅴⅰⅴo手机用几个月后充电时怎么手机有嗡嗡声? 贵阳看肠癌的医院哪个好? 我给手机充电时会发出嗡嗡声 贵阳看胃病挂什么科? 手机充电开始有两声嗡响为什么? 手机充电不亮只嗡嗡响而且是一直响 在贵阳看肛肠病,去哪好 联想t400笔记本怎么没有摄像头? 潮州2014注册会计师证书的规定有哪些? 会计师执业会员需提交哪些材料 请问 “财政部关于注册会计师在审计报告上签名盖章有关问题的通知”中的盖章,是盖注册章还是私人章? 验资报告如何看注册会计师的名字 非执业注册会计师有名章吗 乡村名人的剧情简介 乡村名流为什么没有乡村爱情火? 乡村名流什么时候拍第二部啊?会有第二部嘛? 将已有的时域点进行傅里叶变换成频域求能运行的实用java代码,不要网上抄的名词解释 如何用快速傅里叶变换解决大数相乘问题,希望能给出思路,做一个JAVA的小程序,谢谢 这几门课哪几门最好学?哪几门要有信号与系统基础的(要用的傅里叶变化,卷积什么的)? 如何使用Image J来测量电镜下线粒体的面积 image j软件是哪个公司的 java有没有傅里叶变换的jar包? 门禁怎么修改密码,玻璃门门禁密码如何修改 门禁密码锁怎么改密码 入户门对着卫生间,应该怎样设计才能避免尴尬呢? 大门正对卫生间挂个帘可以吗 卫生间门正对大门可以在洗手间门挂帘子吗 卫生间门挂门帘好吗 风水厕所门能挂金黄色图片帘吗? 玛卡究竟是什么东西。 玛卡到底是什么东西呢?123 请问,玛卡。是什么 枣的寓意和象征 枣红色有什么象征 冬枣的寓意和象征? 简述《秋夜》中“枣树”形象的象征意义。__