新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用C語言實現FFT算法

        用C語言實現FFT算法

        作者: 時間:2011-06-06 來源:網絡 收藏

        /*****************fft programe*********************/
        #include typedef.h
        #include math.h

        本文引用地址:http://www.104case.com/article/150637.htm

        struct compx EE(struct compx b1,struct compx b2)
        {
        struct compx b3 ;
        b3.real=b1.real*b2.real-b1.imag*b2.imag ;
        b3.imag=b1.real*b2.imag+b1.imag*b2.real ;
        return(b3);
        }

        void (struct compx*xin,int N)
        {
        int f,m,nv2,nm1,i,k,j=1,l ;
        /*int f,m,nv2,nm1,i,k,j=N/2,l;*/
        struct compx v,w,t ;
        nv2=N/2 ;
        f=N ;
        for(m=1;(f=f/2)!=1;m++)
        {
        ;
        }
        nm1=N-1 ;

        /*變址運算*/
        for(i=1;i=nm1;i++)
        {
        if(ij)
        {
        t=xin[j];
        xin[j]=xin[i];
        xin[i]=t ;
        }
        k=nv2 ;
        while(kj)
        {
        j=j-k ;
        k=k/2 ;
        }
        j=j+k ;
        }

        {
        int le,lei,ip ;
        float pi ;
        for(l=1;l=m;l++)
        {
        le=pow(2,l);
        // 這里用的是L而不是1 !!!!
        lei=le/2 ;
        pi=3.14159 ;
        v.real=1.0 ;
        v.imag=0.0 ;
        w.real=cos(pi/lei);
        w.imag=-sin(pi/lei);
        for(j=1;j=lei;j++)
        {
        /*double p=pow(2,m-l)*j;
        double ps=2*pi/N*p;
        w.real=cos(ps);
        w.imag=-sin(ps);*/
        for(i=j;i=N;i=i+le)
        {
        /* w.real=cos(ps);
        w.imag=-sin(ps);*/
        ip=i+lei ;
        t=EE(xin[ip],v);
        xin[ip].real=xin[i].real-t.real ;
        xin[ip].imag=xin[i].imag-t.imag ;
        xin[i].real=xin[i].real+t.real ;
        xin[i].imag=xin[i].imag+t.imag ;
        }
        v=EE(v,w);
        }
        }
        }
        return ;
        }


        /*****************main programe********************/

        #includemath.h>
        #includestdio.h>
        #includestdlib.h>
        #include typedef.h


        float result[257];
        struct compx s[257];
        int Num=256 ;
        const float pp=3.14159 ;

        main()
        {
        int i=1 ;
        for(;i0x101;i++)
        {
        s[i].real=sin(pp*i/32);
        s[i].imag=0 ;
        }

        (s,Num);

        for(i=1;i0x101;i++)
        {
        result[i]=sqrt(pow(s[i].real,2)+pow(s[i].imag,2));
        }
        }

        c語言相關文章:c語言教程




        關鍵詞: 算法 FFT 實現 語言

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鸡西市| 汉源县| 绥德县| 旅游| 固安县| 洛隆县| 新津县| 兰考县| 波密县| 五华县| 门头沟区| 鄱阳县| 百色市| 营山县| 蓬溪县| 洪雅县| 荔波县| 桑日县| 咸阳市| 三亚市| 栾川县| 商河县| 嘉善县| 门源| 天门市| 明光市| 疏附县| 清涧县| 南昌县| 武川县| 昭平县| 朔州市| 安化县| 海兴县| 汤阴县| 双牌县| 威信县| 科尔| 新河县| 尉氏县| 成都市|