24СʱÈÈÃŰæ¿éÅÅÐаñ    

²é¿´: 2584  |  »Ø¸´: 2
¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û2´Î£¬×÷Õßbaobiao007Ôö¼Ó½ð±Ò 1.4 ¸ö

baobiao007

ľ³æ (Ö°Òµ×÷¼Ò)


[×ÊÔ´] ¡¾·ÖÏí¡¿ÆµÂʲ¨ÊýÓòFKÆ«ÒÆc³ÌÐò¡¾Ô­´´¡¿

#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                  for(j=0; j                          fread(&a[ i ][j],sizeof(float),1,fp);
         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                  for(j=0; j                          fwrite(&a[ i ][j],sizeof(float),1,fp);
         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                 p=(float *)calloc(n,sizeof(float));
        return p;
}
//ÊÍ·ÅÉêÇëµÄ¶þά¶¯Ì¬Êý×é
void FreeMySpace(float ***p, int m)
{
        int i;
        for(i=0; i                 free((*p)[ 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                 for(j=0; j                         *(*(*b+i)+j)=*(*(*a+j)+i);
}
//2D-FFT tag=1,Õý±ä»»;tag=-1,·´±ä»»
void FFT2D(float **xr,float **xi,int m,int n,int tag)
{
        int i,k1,k2;
        float **xtr, **xti;
        xtr=MySpace(n,m);
        xti=MySpace(n,m);
        k1=log(m)/log(2.0);
        k2=log(n)/log(2.0);
        if(n>pow(2,k1)) k1=k1+1;
        if(m>pow(2,k2)) k2=k2+1;
    for(i=0; i         fft(xr[ i ],xi[ i ],k2,tag);
    Zhuan(&xr,&xtr,m,n);
    Zhuan(&xi,&xti,m,n);
    for(i=0; i         fft(xtr,xti,k1,tag);
        Zhuan(&xtr,&xr,n,m);
        Zhuan(&xti,&xi,n,m);
        FreeMySpace(&xtr,n);
        FreeMySpace(&xti,n);       
}
//sinc²åÖµ
void SincIns(float **pur,float **pui,float ***midr,float ***midi,
                           float v,int m,int n,float dkx,float dkz,float df)
{
        int i,j,l;
        float pi=3.1415926;
        float kx, kz;//Ô²²¨Êý
        float dw;//ԲƵÂʲÉÑù¼ä¸ô
        float lm,k,a,b;
        dw=2.0*pi*df;
        for(i=0; i<=m/2; i++)
            for(j=0; j<=n/2; j++)               
                {
                        kx=i*2.0*pi*dkx;
                        kz=j*2.0*pi*dkz;
                        k=0.5*v*sqrt(kx*kx+kz*kz)/dw;//ËÙ¶ÈÒª¼õ°ë(±¬Õ¨·´Éä½çÃæÔ­Àí)
            l=(int)k;
            lm=k-l;
                        a=pi*lm;
                        b=1.0-lm;
                        if(fabs(a-0)<1e-6 || fabs(b-0)<1e-6) continue;
            (*midr)[ i ][j]=pur[ i ][ l ]*cos(a)*sin(a)/a
                                +sin(a)*sin(a)/a*pui[ i ][ l ]
                                +pur[ i ][l+1]*cos(b*pi)*sin(b*pi)/(b*pi)
                                -pui[ i ][l+1]*sin(b*pi)*sin(b*pi)/(b*pi);
                        (*midi)[j]=pui[ i ][ l ]*cos(a)*sin(a)/a
                                -sin(a)*sin(a)/a*pur[ i ][ l ]+pui[ i ][l+1]*cos(b*pi)*sin(b*pi)/(b*pi)
                                +pur[ i ][l+1]*sin(b*pi)*sin(b*pi)/(b*pi);

                }
        for(i=m/2+1; i                 for(j=0; j<=n/2; j++)
                {
                        (*midr)[ i ][j]= (*midr)[m-i][j];
                        (*midi)[ i ][j]=(*midi)[m-i][j];
                }
}
void main()
{
///³õʼ²ÎÊýÉèÖÃÇø///////////////////////////////////
        const int DNUM=64;//ÁãÆ«ÒÆ¾àÆÊÃæ½ÓÊÕµÀÊý       
        const int TNUM=256;//ʱ¼ä²ÉÑùµãÊý
    const int ZNUM=TNUM;//Éî¶È²ÉÑùµãÊý
        const float V=2000.0;//Éϸ²½éÖÊËÙ¶È
        const float DT=0.002;//ʱ¼ä²ÉÑù¼ä¸ô2ms
        const float DX=10.0;//µÀ¼ä¾à
        const float DZ=DT*V*0.5;//Éî¶È²½³¤(ËÙ¶ÈÒª¼õ°ë)
        const float pi=3.1415926;
    char fname1[]="before.dat";//ԭʼµØÕð¼Ç¼ÎļþÃû
        char fname2[]="after.dat";//Æ«ÒÆºóµÄÆÊÃæÎļþÃû
        char fname3[]="mid.dat";//ƵÆ×ͼ
////ÆäËû²ÎÊý¼ÆËãÇø//////////////////////////////////
        float **recordr, **recordi;
        float **midr, **midi;
        float df;//ƵÂʲÉÑù¼ä¸ô
        float dkx;//x·½Ïò²¨Êý²ÉÑù¼ä¸ô
        float dkz;//z·½Ïò²¨Êý²ÉÑù¼ä¸ô
        float dex;
        int i,j;
    df=1.0/(DT*TNUM); dkx=1.0/(DX*DNUM);
        dkz=1.0/(DZ*ZNUM);
        //ÉêÇë¿Õ¼ä
        recordr=MySpace(DNUM,TNUM);
        recordi=MySpace(DNUM,TNUM);
        midr=MySpace(DNUM,TNUM);
        midi=MySpace(DNUM,TNUM);
        //¶ÁÈëԭʼÆÊÃæ
        MyReadFile(fname1,recordr,DNUM,TNUM);
        //¶ÔԭʼÆÊÃæ½øÐжþά¸µÀïÒ¶±ä»»
    FFT2D(recordr,recordi,DNUM,TNUM,1);
        MyWriteFile(fname3,recordr,DNUM,TNUM);
        //¶Ô±ä»»½á¹û½øÐвåÖµ
    SincIns(recordr,recordi,&midr,&midi,V,DNUM,TNUM,dkx,dkz,df);
        //³ËÒò×Ó
    for(i=0; i             for(j=0; j                 {   dex=0.5*V*j*dkz/sqrt(pow(i*dkx,2)+pow(j*dkz,2));
                        if(fabs(dex-0)<1e-6) continue;
                    midr[j]=midr[ i ][j]*dex;
            midi[ i ][j]=midi[ i ][j]*dex;                       
                }
        //¸µÀïÒ¶·´±ä»»
        FFT2D(midr,midi,DNUM,TNUM,-1);
        MyWriteFile(fname2,midr,DNUM,TNUM);
        //Êͷſռä
        FreeMySpace(&recordr,DNUM);
        FreeMySpace(&recordi,DNUM);
        FreeMySpace(&midr,DNUM);
        FreeMySpace(&midi,DNUM);
}
ÎåµãÂö³åµÄÆ«ÒÆ½á¹û£º


[ Last edited by baobiao007 on 2011-2-18 at 03:48 ]
»Ø¸´´ËÂ¥

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

¿Æ¼¼Ð´×÷Óë»æÍ¼

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zmc

½ð³æ (ÕýʽдÊÖ)


¡ï¡ï¡ï ÈýÐǼ¶,Ö§³Ö¹ÄÀø

ɳ·¢
2Â¥2011-03-21 10:13:04
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

biyadi

Ìú³æ (³õÈëÎÄ̳)


¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶,ÓÅÐãÍÆ¼ö

c:\documents and settings\administrator\×ÀÃæ\н¨Îļþ¼Ð\c.c(4) : fatal error C1083: Cannot open include file: 'FFT.h': No such file or directory
Ö´ÐÐ cl.exe ʱ³ö´í.
ÎÒÔËÐÐʱ×Ü»á³öÏÖÒÔÉÏÎÊÌâ Ôõô½â¾öÄØ
3Â¥2011-12-14 15:56:15
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ baobiao007 µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¹«Åɳö¹ú] ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8.O.551.O.5.4,¿ÆÄ¿È«,¿ÉÙ¤¼± +3 PbwVEMK5haaE 2026-08-25 4/200 2026-08-26 03:20 by cNXvBfCpiZOM
[¿¼²©] ÊÛSCIÒ»ÇøT0PÎÄÕ£¬ÎÒ:8.O.55.1.O.5.4,¿ÆÄ¿È«,¿É+¼± +3 Qj98d49dHFb9 2026-08-25 4/200 2026-08-26 03:08 by cNXvBfCpiZOM
[¿¼ÑÐ] ÊÛSCIÒ»ÇøT0PÎÄÕ£¬ÎÒ:8.O.55.1.O.5.4,¿ÆÄ¿È«,¿É+¼± +3 7K1CJE38xLG4 2026-08-25 4/200 2026-08-26 02:04 by cNXvBfCpiZOM
[»ù½ðÉêÇë] 2026Äê8ÔÂ25ÈÕ¹ú×ÔÈ»·Å°ñǰͻȻÊÕµ½ÁÐÈëÆÀÉóר¼ÒÓʼþ£¬ÓйØÏµÂ𣿠+17 ľˮ˼¶¹ 2026-08-25 20/1000 2026-08-26 01:26 by chengyan1220
[»ù½ðÉêÇë] ½ñÌìÎñί»á¿ªÍêÁË£¬Ã÷Ìì³ö½á¹ûÂð +18 angus9576 2026-08-25 22/1100 2026-08-26 00:41 by merchancy
[»ù½ðÉêÇë] Ã÷ÌìÓ¦¸Ã¿É²éÁË£¡£¿ +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[»ù½ðÉêÇë] ·Å°ñǰµÄ²»µ­¶¨ 20+4 snowwithsea 2026-08-19 19/950 2026-08-25 17:57 by chick875
[»ù½ðÉêÇë] ijЩ»ú¹¹£¬ÒÔЧÂʵÍΪÈÙ£¬ÒÔЧÂʵÍ×÷Ϊ´æÔڸР+9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[»ù½ðÉêÇë] 2026¹ú×ÔÈ»º¯ÆÀ·Ñµ½ÕË +20 ÑòÑü°å 2026-08-21 23/1150 2026-08-25 16:34 by zsna
[»ù½ðÉêÇë] ½ñÈÕ²»·Å°ñ£¿Íø´«¹ú×ÔȻԤ¼Æ 8 Ô 27 Èտɲé½á¹û +17 ҽѧÀÏÄк¢ 2026-08-20 22/1100 2026-08-25 15:36 by ҽѧÀÏÄк¢
[»ù½ðÉêÇë] Èç¹û´Ë¿ÌÄãÕýÔÚΪ¹ú»ù¸Ðµ½½¹ÂÇ£¬²»·ÁÀ´ÌýÌýÕâÊס¶»ù½ðÖ®Íâ¡· +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[»ù½ðÉêÇë] ÈËÆø²»ÐÐÁË +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by ¹Â¶ÀµÄÓ¢ÐÛ6
[»ù½ðÉêÇë] 2026ÄêµÄ¹ú¼ÒÉç¿Æ»ù½ðÏîĿͨѶÆÀÉóµÄйæÔòÓëж¯Ïò¡¢ÐÂÌôÕ½ +5 process2012 2026-08-23 7/350 2026-08-25 09:42 by huixian257
[»ù½ðÉêÇë] ½ñÌì»ù½ð»á³ö½á¹ûÂð£¿20260819 +17 kkkl_v 2026-08-19 18/900 2026-08-25 09:41 by windflowerwy
[»ù½ðÉêÇë] filecode£¬4¸öjtjcÁË +14 ziyangfang 2026-08-19 17/850 2026-08-24 18:37 by ¹þ¹þ¸ò£¿
[»ù½ðÉêÇë] ÈÃÎÒÖÐÒ»¸öÃæÉϰɣ¡ +13 ´óƼ1987 2026-08-20 16/800 2026-08-24 10:23 by ̫ɵÁË
[»ù½ðÉêÇë] ¿ÆÑй¶ùÌ«ÄÑÁË +18 ÎÒ4´ó°×²Ë 2026-08-20 19/950 2026-08-24 09:47 by ¿­¶÷¹ãÊ¢´ß»¯·ÖÎ
[½Ìʦ֮¼Ò] Ìø²ÛºóÔÚÑÐÏîÄ¿Ôõô°ì£¿ +5 ¼òµ¥»¯xn 2026-08-22 10/500 2026-08-23 12:38 by ¼òµ¥»¯xn
[»ù½ðÉêÇë] ½ñÌì·Å°ñÂ𣿠+15 ²¼²¼ºÍÒ»¶þ 2026-08-19 16/800 2026-08-23 09:55 by ÕÅ´ºÉú
[»ù½ðÉêÇë] Ó¦¸ÃÊÇÏÂÖÜÈý26ÈÕ¹«²¼Á˰ɣ¿ +4 ¹þ¹þ¸ò£¿ 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û