| ²é¿´: 3139 | »Ø¸´: 6 | |||
| ¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û5´Î£¬×÷Õßbaobiao007Ôö¼Ó½ð±Ò 2.6 ¸ö | |||
[×ÊÔ´]
¡¾·ÖÏí¡¿ÏàÒÆ·¨Æ«ÒƳÌÐò¡¾Ô´´¡¿
|
|||
|
#include #include #include #include"FFT.h" //½«ÎļþfilenameÖеÄÄÚÈݶÁÈë¶þάÊý×éa void MyReadFile(char *filename,float **a,int m,int n) { int i,j; FILE *fp; fp=fopen(filename,"rb" ;for(i=0; i fclose(fp); } //½«¶þάÊý×éaÖеÄÊý¾ÝдÈëÎļþfilenameÖÐ void MyWriteFile(char *filename,float **a,int m,int n) { int i,j; FILE *fp; fp=fopen(filename,"wb" ;for(i=0; i fclose(fp); } //ÉêÇë¶þά¶¯Ì¬Êý×éµÄº¯Êý float **MySpace(int m, int n) { int i; float **p; p=(float **)calloc(m,sizeof(float *)); if(p==NULL) { printf("ÉêÇë¿Õ¼äʧ°Ü\n" ;exit(1); } for(i=0; i return p; } //ÊÍ·ÅÉêÇëµÄ¶þά¶¯Ì¬Êý×é void FreeMySpace(float ***p, int m) { int i; for(i=0; i free(*p); } //¾ØÕóתÖÃa[m][n]->b[n][m] void Zhuan(float ***a,float ***b,int m,int n) { int i,j; for(i=0; i } void main() { /////////////////////////////////ÉèÖóõʼ²ÎÊý//////////////////////////////////// const int DNUM=256;//ÁãÆ«ÒÆ¾àÆÊÃæ½ÓÊÕµÀÊý const int TNUM=512;//ʱ¼ä²ÉÑùµãÊý const int ZNUM=256;//Éî¶È²ÉÑùµãÊý const float DT=0.002;//ʱ¼ä²ÉÑù¼ä¸ô2ms const float DX=12.5;//µÀ¼ä¾à const float DZ=5.0;//Éî¶ÈÑÓÍØ²½³¤ const float pi=3.1415926; //float V=2000.0; float V[ZNUM]; char fname1[]="Datapost-8-8-256-512.dat";//ÔʼµØÕð¼Ç¼ÎļþÃû char fnamev[]="Modelpost-8-8-256-256.dat";//ËÙ¶ÈÎļþ char fname2[]="after.dat";//Æ«ÒÆºóµÄÆÊÃæÎļþÃû ////ÆäËû²ÎÊý¼ÆËãÇø////////////////////////////////// float **recordr, **recordi, **poum; float **midr, **midi, *tempr, *tempi, *temp2r, *temp2i; float p, **v, vt; float df;//ƵÂʲÉÑù¼ä¸ô float dkx;//x·½Ïò²¨Êý²ÉÑù¼ä¸ô float w;//ԲƵÂÊ float z;//Éî¶È float kz;//z·½ÏòÔ²²¨Êý float kx; int iw,iz,ix,k1,k2; df=1.0/(DT*TNUM); dkx=1.0/(DX*DNUM); ///ÏàÒÆÆ«ÒÆ¹ý³Ì///////////////////////////////////// //ÉêÇë¿Õ¼ä tempr=(float *)calloc(DNUM,sizeof(float)); tempi=(float *)calloc(DNUM,sizeof(float)); temp2r=(float *)calloc(DNUM,sizeof(float)); temp2i=(float *)calloc(DNUM,sizeof(float)); recordr=MySpace(DNUM,TNUM); recordi=MySpace(DNUM,TNUM); poum=MySpace(DNUM,ZNUM); midr=MySpace(TNUM,DNUM); midi=MySpace(TNUM,DNUM); v=MySpace(DNUM,ZNUM); //¶ÁÈëµþ¼ÓÆÊÃæ MyReadFile(fname1,recordr,DNUM,TNUM); MyReadFile(fnamev,v,DNUM,ZNUM); for(iz=0; iz for(ix=0; ix v[ix][iz]=V[iz]; V[iz]=vt; } } for(iz=0; iz //recordr[127][127]=1.0; //recordr[50][50]=1.0; //½«ÊäÈëÆÊÃæ¶Ôʱ¼ä×öһά¸µÀïÒ¶±ä»» k1=log(DNUM)/log(2.0); k2=log(TNUM)/log(2.0); if(DNUM>pow(2,k1)) k1=k1+1; if(TNUM>pow(2,k2)) k2=k2+1; for(ix=0; ix Zhuan(&recordr,&midr,DNUM,TNUM); Zhuan(&recordi,&midi,DNUM,TNUM); //ԲƵÂÊÑ»·ÓëÉî¶ÈÑÓÍØ for(iw=0; iw<=TNUM/2; iw++)//ƵÂÊÑ»· { w=2.0*pi*iw*df; if(w==0) continue; for(ix=0; ix tempi[ix]=midi[iw][ix]; } for(iz=0; iz fft(tempr,tempi,k1,1);//¶Ôx½øÐÐһά¸µÀïÒ¶±ä»» for(ix=0; ix kx=2.0*pi*ix*dkx; if(ix>DNUM/2) kx= 2.0*pi*(DNUM-ix-1)*dkx; p=1.0-pow(0.5*V[iz]*kx/w,2); if(p>=0.0){ kz=w*sqrt(p)/(0.5*V[iz]); temp2r[ix]=tempr[ix]*cos(kz*DZ)-tempi[ix]*sin(kz*DZ); temp2i[ix]=tempi[ix]*cos(kz*DZ)+tempr[ix]*sin(kz*DZ); } else{ temp2r[ix]=0.0; temp2i[ix]=0.0; } } //kx×öһά¸µÀïÒ¶·´±ä»» fft(temp2r,temp2i,k1,-1); for(ix=0; ix tempi[ix]=temp2i[ix]; //³ÉÏñ poum[ix][iz]+=2.0*temp2r[ix]; } } } //Êä³öÆ«ÒÆ½á¹ûÎļþ MyWriteFile(fname2,poum,DNUM,ZNUM); //Êͷſռä FreeMySpace(&recordr,DNUM); FreeMySpace(&recordi,DNUM); FreeMySpace(&midr,TNUM); FreeMySpace(&midi,TNUM); FreeMySpace(&poum,DNUM); free(tempr);free(tempi); free(temp2r);free(temp2i); FreeMySpace(&v,DNUM); } |
» ÊÕ¼±¾ÌûµÄÌÔÌûר¼ÍƼö
¿Æ¼¼Ð´×÷Óë»æÍ¼ |
» ²ÂÄãϲ»¶
²Ü½¨¾¢ÍŶÓÔÚ¸÷ÖÖ½éÖÊÖз¢ÏÖº¬½ðÊô΢Á££¬·¢Ã÷΢Á£ÕÒ¿ó¼¼Êõ£¬»ñµÃ8Ïî¹ú¼Ò·¢Ã÷רÀûÊÚȨ
ÒѾÓÐ11È˻ظ´
Ê×´ÎÔÚÒþ·ü¿óÌåÉÏ·½·¢ÏÖ½ð¡¢ÁòËáǦ¡¢ÏõËáǦ¡¢ÈýÑõ»¯ÎٵȺ¬½ðÊôÄÉÃ×΢Á£
ÒѾÓÐ8È˻ظ´
µØÇòÎïÀíѧºÍ¿Õ¼äÎïÀíѧÂÛÎÄÈóÉ«/·ÒëÔõôÊÕ·Ñ?
ÒѾÓÐ66È˻ظ´
ÇóÖú£ºÓÐûÓдóÉñÓÐÁ÷Ìå°ü¹üÌ弯ËãÈí¼þ
ÒѾÓÐ1È˻ظ´
282Çóµ÷¼Á
ÒѾÓÐ0È˻ظ´
µØÖÊѧ¸´ÊÔµ÷¼Á
ÒѾÓÐ1È˻ظ´
Ã÷ÄêÉ¢½ð±Ò
ÒѾÓÐ1È˻ظ´
yanggis
ľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 16 (СѧÉú)
- ¹ó±ö: 0.034
- ½ð±Ò: 1941.6
- Ìû×Ó: 1368
- ÔÚÏß: 69.8Сʱ
- ³æºÅ: 74408
2Â¥2011-03-06 10:48:54
3Â¥2015-03-29 19:33:50
4Â¥2015-03-29 21:58:30
5Â¥2016-01-28 03:17:14
6Â¥2016-01-28 08:16:25
7Â¥2018-12-17 21:24:21









;
»Ø¸´´ËÂ¥
ͶƱ: