±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 2465  |  »Ø¸´: 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 µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤µ÷¼Á +15 kikiki7 2026-03-30 15/750 2026-03-31 04:02 by fmesaito
[¿¼ÑÐ] 26¿¼ÑÐ-291·Ö-ÏÃÃÅ´óѧ£¨085601£©-ÈáÐÔµç×ÓѧԺ²ÄÁϹ¤³ÌרҵÇóµ÷¼Á +5 min3 2026-03-24 6/300 2026-03-30 18:42 by 544594351
[¿¼ÑÐ] Çóµ÷¼Á +10 ¼Ò¼Ñ¼Ñ¼Ñ¼Ñ¼Ñ 2026-03-29 10/500 2026-03-30 18:34 by 544594351
[¿¼ÑÐ] 070300»¯Ñ§354Çóµ÷¼Á +7 101´ÎÏ£Íû 2026-03-28 7/350 2026-03-30 13:22 by Iveryant
[¿¼ÑÐ] Çóµ÷¼Á +7 Çà´º²ÃΪÈý½Ø 2026-03-29 7/350 2026-03-30 13:14 by laoshidan
[¿¼ÑÐ] 0703±¾¿ÆÖ£ÖÝ´óѧÇóµ÷¼Á +7 nhj_ 2026-03-25 7/350 2026-03-30 12:44 by fangnagu
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©Àí¹¤´óѧ±¾¿Æ211²ÄÁϹ¤³Ì294Çóµ÷¼Á +8 mikasaµÄΧ½í 2026-03-28 8/400 2026-03-29 12:48 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 298Çóµ÷¼Á +3 ÖÖÊ¥´Í 2026-03-29 3/150 2026-03-29 12:06 by longlotian
[¿¼ÑÐ] 343Çóµ÷¼Á +6 °®î¿°í 2026-03-29 6/300 2026-03-29 12:00 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 071000ÉúÎïѧÇóµ÷¼Á£¬³õÊԳɼ¨343 +7 ССÌðÃæÍÅ 2026-03-25 7/350 2026-03-28 20:25 by ÌÆãå¶ù
[¿¼ÑÐ] 085405 ¿¼µÄ11408Çó¸÷λÀÏʦ´ø×ß +3 Qiuѧing 2026-03-28 3/150 2026-03-28 09:19 by ÀֺǺǵÄ×·ÃÎÈË
[¿¼ÑÐ] 292Çóµ÷¼Á +14 ¶ì¶ì¶ì¶î¶î¶î¶î¶ 2026-03-25 15/750 2026-03-28 08:45 by WYUMater
[¿¼ÑÐ] 331»·¾³¿ÆÑ§Ó빤³ÌÇóµ÷¼Á +3 ìÚÈ»ºÃÔËÆø 2026-03-27 3/150 2026-03-28 04:11 by fmesaito
[¿¼ÑÐ] 279 ·Ö Çóµ÷¼Á +4 ˯¸öºÃ¾õ_16 2026-03-24 4/200 2026-03-27 15:05 by ×íÔÚ·çÀï
[¿¼ÑÐ] 308Çóµ÷¼Á +7 īīĮ 2026-03-25 7/350 2026-03-27 14:47 by ¿ñìÅÂóµ±µ±
[¿¼ÑÐ] 085600£¬²ÄÁÏÓ뻯¹¤321·Öµ÷¼Á +4 ´ó²öС×Ó 2026-03-27 6/300 2026-03-27 14:11 by ËÉ»¨¸×1201
[¿¼ÑÐ] ¿¼Ñе÷¼Á +10 ºôºô£¿~+123456 2026-03-24 10/500 2026-03-27 11:46 by wangjy2002
[ÂÛÎÄͶ¸å] Journal of Mechanical Science and Technology +3 Russ_ss 2026-03-25 5/250 2026-03-27 10:49 by ½С¹û»­´ó±ý
[¿¼ÑÐ] 081200-11408-276ѧ˶Çóµ÷¼Á +3 ´Þwj 2026-03-26 3/150 2026-03-26 19:57 by nihaoar
[¿¼ÑÐ] Ò»Ö¾Ô¸ÎäÀí085500»úеרҵ×Ü·Ö300Çóµ÷¼Á +3 an10101 2026-03-24 7/350 2026-03-25 00:00 by ɽ¹í0-
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û