搜索

fft程序需要内存空间(fft程序)

发表于 2024-10-24 04:42:42 来源:未焚徙薪网
导读 大家好,程t程小豆豆来为大家解答以上的问题。fft程序需要内存空间,序需序fft程序这个很多人还不知道,内存现在让我们一起来看看吧!1、空间这个是程t程我上个星期才 大家好,小豆豆来为大家解答以上的问题。fft程序需要内存空间,序需序fft程序这个很多人还不知道,内存现在让我们一起来看看吧!1、空间这个是程t程我上个星期才交的课程设计里面的源代码,绝对可以运行的序需序。2、内存本人也觉得应该比较容易看懂吧。空间3、程t程#include #include using namespace std; #define PI 3.1415927 #define MAX 20000 //////////////////////////////// //以指数形式表示的序需序复数 ///////////////////////////////// struct CompExp { float AbValue; float Angle; }; ////////////////////////////////////// //以一般形式表示的复数 /////////////////////////////////////// struct Complex { float Re; float Im; }A[MAX]; int n; float a[MAX] ; ////////////////////////////////////////// //将一个数的二进制数反转之后的新数返回 //例如6->110->011->3 ////////////////////////////////////////// int Rev(int i) { int index,s; //index为要返回的数 s=(int)log2(n); index=0; while(s>0) { s--; index+=(i%2)*(int)pow(2,s); i=i/2; } return index; } //////////////////////////////////////////// //将输入的离散数据进行位反置转换,并复制在复数数组A中 //////////////////////////////////////////// void bit(float* a,内存 Complex* A) { for(int i=0;iRe = a->Re + b->Re; c->Im = a->Im + b->Im; } ///////////////////////////////////////////// //复数的减法a-b=c ///////////////////////////////////////////// void Sub(Complex* a, Complex* b, Complex* c) { c->Re = a->Re - b->Re; c->Im = a->Im - b->Im; } //////////////////////////////////////////// //复数的乘法a*b=c //////////////////////////////////////////// void Mul(Complex* a, Complex* b, Complex* c) { float tempRe,tempIm; tempRe = a->Re * b->Re - a->Im * b->Im; tempIm = a->Re * b->Im + a->Im * b->Re; c->Re = tempRe; c->Im = tempIm; } ///////////////////////////////////////// //将复数从指数形式转化为一般形式 ///////////////////////////////////////// void CompTrans(CompExp* a, Complex* b) { b->Re = a->AbValue * cos(a->Angle); b->Im = a->AbValue * sin(a->Angle); } /////////////////////////////////////// //基于迭代的快速傅里叶算法 /////////////////////////////////////// void FFT() { Complex Wm,W,u,t; CompExp wm,w; bit(a,A); for(int i=1;i>n; while(!test(n)) { cout>n; } for(int i=0;i>a[i]; } } ////////////////////////////////// //管理输出的函数 ////////////////////////////////// void Output() { for(int i=0;iusingnamespacestd;#definePI3.1415927#defineMAX20000//////////////////////////////////以指数形式表示的复数/////////////////////////////////structCompExp{floatAbValue;floatAngle;};////////////////////////////////////////以一般形式表示的复数///////////////////////////////////////structComplex{floatRe;floatIm;}A[MAX];intn;floata[MAX];////////////////////////////////////////////将一个数的二进制数反转之后的新数返回//例如6->110->011->3//////////////////////////////////////////intRev(inti){intindex,s;//index为要返回的数s=(int)log2(n);index=0;while(s>0){s--;index+=(i%2)*(int)pow(2,s);i=i/2;}returnindex;}//////////////////////////////////////////////将输入的离散数据进行位反置转换,并复制在复数数组A中////////////////////////////////////////////voidbit(float*a,Complex*A){for(inti=0;iRe=a->Re+b->Re;c->Im=a->Im+b->Im;}///////////////////////////////////////////////复数的减法a-b=c/////////////////////////////////////////////voidSub(Complex*a,Complex*b,Complex*c){c->Re=a->Re-b->Re;c->Im=a->Im-b->Im;}//////////////////////////////////////////////复数的乘法a*b=c////////////////////////////////////////////voidMul(Complex*a,Complex*b,Complex*c){floattempRe,tempIm;tempRe=a->Re*b->Re-a->Im*b->Im;tempIm=a->Re*b->Im+a->Im*b->Re;c->Re=tempRe;c->Im=tempIm;}///////////////////////////////////////////将复数从指数形式转化为一般形式/////////////////////////////////////////voidCompTrans(CompExp*a,Complex*b){b->Re=a->AbValue*cos(a->Angle);b->Im=a->AbValue*sin(a->Angle);}/////////////////////////////////////////基于迭代的快速傅里叶算法///////////////////////////////////////voidFFT(){ComplexWm,W,u,t;CompExpwm,w;bit(a,A);for(inti=1;i>n;while(!test(n)){cout>n;}for(inti=0;i>a[i];}}////////////////////////////////////管理输出的函数//////////////////////////////////voidOutput(){for(inti=0;i4、但没注释。5、So sorry. 还有需要可发信息联系. ^_^。本文到此分享完毕,希望对大家有所帮助。
随机为您推荐
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by fft程序需要内存空间(fft程序),未焚徙薪网   sitemap

回顶部