精华内容
下载资源
问答
  • 用直接计算傅里叶系数的方法算法及练习,周期信号的频谱分析
  • 傅里叶级数系数 的计算

    千次阅读 2013-04-12 15:13:28
    傅里叶级数系数 的计算  2009-10-30 20:56:03| 分类: 数值计算方法|字号 订阅 /*

    http://blog.163.com/echo_8404@126/blog/#m=0&t=1&c=fks_087069080094086074080081085095085084088065083095085071086


    傅里叶级数系数 的计算  

    2009-10-30 20:56:03|  分类: 数值计算方法|字号 订阅

    /*

        f(t) = a0+E(an*cos(n*w1*t)+bnsin(n*w1*t))

               a0 = 1/T*积分(f(t)*dt)

               an = 2/T*积分(f(t)*cos(n*w1)*dt)?

               an = 2/T*积分(f(t)*sin(n*w1)*dt)

    //********************************************************************************

        文件名      :   Fourier.c

        作者        : Signal And System 马

        初次时间    :   09.10.30 晚上 20:43

        描述        :

                         a,b ---- 1个周期内信号有值区间的下、上限。

                         t ------ 信号周期

                         l--------谐波次数

                         m--------子区间组数

                         cn-------n次谐波振幅

                         w ------基波角频率

                         an,bn---三角式系数

                         h ------步长

                         nw ------n次谐波

        效果        :   成功!!!

                            屏幕上打印出三角式系数an,bn,cn

                            和离散的幅度频谱图

    //********************************************************************************

    */

    //周期方波信号 傅里叶基数系数 计算

    #include"stdio.h"

    #include"stdlib.h"

    #include"math.h"

    main()

    {

        float ta[20][3];

        float a = 0;

        float b = 1;

        float t = 4;

        float pi = 3.1415926;

        float x,a0,c0,pc,ps,an,bn,cn,h,w,t0,nw;

        int i,j;

        int n1,n;

        int l=16,m = 16;

        float san();

        float sbn();

        void gw12();

        h = (b - a)/(2*m);

        w = 2*pi/t;

        t0 = a;

    //求取直流分量幅度

        nw = 0;

        pc = san(t0,h,m,nw,pc);

        a0 = pc/t;

        c0 = a0;

        ta[1][3] = c0*2;

        printf("\na0=%4.2f,c0=%4.2f\n",a0,c0);

        getch();

    //求N次谐波分量频谱幅度

        for(n=1;n<=l+1;n++)

            {

                nw = n*w;

                pc = san(t0,h,m,nw,pc);

                an = 2*pc/t;

                ps = sbn(t0,h,m,nw,ps);

                bn = 2*ps/t;

                x = an*an + bn*bn;

                cn = sqrt(x);

                n1 = n+1;

                ta[n1][1] = an;

                ta[n1][2] = bn;

                ta[n1][3] = cn;

            }

    //打印计算结果

        printf("\n N= AN=   BN=    CN=");

        for(j=2;j<=l+1;j++)

            {

                n = j-1;

                printf("\n%4d%7.4f%7.4f%7.4f",n,ta[j][1],ta[j][2],ta[j][3]);

            }

        getch();

        gw12(ta,l);

        getch();

    }

    //求三角式系数AN的函数

    float san(t0,h,m,nw,pc)

    float t0,h,nw,pc;

    int m;

    {

        float y[4],sm,tc,t;

        int i,j;

        sm = 0;

        tc = t0;

        for(j=1;j<=m;j++)

            {

                t = tc;

                for(i=1;i<=3;i++)

                    {

                        y[i] = cos(nw*t);

                        t = tc+i*h;

                    }

                sm = sm+y[1]+4*y[2]+y[3];

                tc=tc+2*h;

            }

        pc=sm*h/3;

        return(pc);

    }

    //求三角式系数BN的函数

    float sbn(t0,h,m,nw,ps)

    float t0,h,nw,ps;

    int m;

    {

        float y[4],sm,tc,t;

        int i,j;

        sm = 0;

        tc = t0;

        for(j=1;j<=m;j++)

            {

                t = tc;

                for(i=1;i<=3;i++)

                    {

                        y[i] = sin(nw*t);

                        t = tc+i*h;

                    }

                sm = sm+y[1] + 4*y[2]+y[3];

                tc=tc+2*h;

            }

        ps=sm*h/3;

        return(ps);

    }

    //打印幅度频谱的函数--------------------------------------------------------------

    void gw12(ta,l)

    float ta[20][3];

    int l;

    {

        float gm,sm,bg,ccn[20];

        int i,j,n1,nx;

        char ch[45];

        for(j=0;j<=45;j++)

            ch[j] = '*';

        for(j=1;j<=l+1;j++)

            {ccn[j] = ta[j][3]/2;}

            //求最大最小值---------------------------------------------------------------

        bg = ccn[1];

        sm = ccn[1];

        for(j=2;j<=l+1;j++)

            {

                if(ccn[j]>bg)

                    bg=ccn[j];

                else if(ccn[j]<sm)

                        sm = ccn[j];

            }

        printf("\n\n min=%6.4fmax=%6.4f",sm,bg);//small,big

           //--求出比例---------------------------------------------------------------------------

        gm = bg -sm;

        for(j=1;j<=l+1;j++)

            ccn[j] = (ccn[j]-sm)/gm*44;

            //打印负轴频谱-----------------------------------------------------------------------

        printf("\n\nCN/2N");

        for(j=1;j<=l+1;j++)

            {

                n1 = l+1-j+1;

                nx = ccn[n1]+1;

                printf("\n%6.4f%3d",ta[n1][3]/2,-n1+1);

                for(i=1;i<=nx;i++)

                    putchar(ch[i]);

            }

         getch();

        //--打印正轴频谱----------------------------------------------------------------

         for(j=2;j<=l+1;j++)

            {

                n1 = j;

                nx = ccn[n1]+1;

                printf("\n%6.4f%3d",ta[n1][3]/2,n1-1);

                for(i=1;i<=nx;i++)

                    putchar(ch[i]);

            }

    }

    傅里叶级数系数 的计算 - echo - echo

    傅里叶级数系数 的计算 - echo - echo

    展开全文
  • oi当中常见FFT推导方法是从多项式乘法出发,作为多项式乘法优化算法出现,关于多项式相关理论详见Miskcoo大佬blog从多项式乘法到快速傅里叶变换 - Miskcoo's Space,写十分详细。在这个专题下,将会依次...

    开的这个坑大概就是写写从另一个视角来看快速离散傅里叶变换FFT。oi当中常见的FFT的推导方法是从多项式乘法出发,作为多项式乘法的优化算法出现,关于多项式的相关理论详见Miskcoo大佬的blog从多项式乘法到快速傅里叶变换 - Miskcoo's Space,写的十分详细。

    在这个专题下,将会依次讲解傅里叶级数FS,傅里叶变换FT,离散时间傅里叶变换DTFT,离散傅里叶变换DFT。主要是参考wys在WC2018上讲课的课件。

    首先在这篇文章中介绍傅里叶级数的相关内容。傅里叶级数作为一种周期函数的无穷级数展开,它将周期函数表示为正弦函数和余弦函数构成的级数。正如泰勒级数将连续且在

    equation?tex=x_0处任意阶可导的函数表示为

    equation?tex=f%28x%29%3D%5Csum_%7Bn%3D0%7D%5E%7B%5Cinfty%7D%7B%5Cfrac%7Bf%5E%7B%28n%29%7D%28x_0%29%7D%7Bn%21%7D%28x-x_0%29%5En%7D这样由幂函数构成的级数一样,傅里叶级数将周期函数表示为

    equation?tex=f%28t%29%3D%5Cfrac%7Ba_0%7D%7B2%7D%2B%5Csum_%7Bn%3D1%7D%5E%7B%5Cinfty%7D%28a_n+%5Cmathrm%7Bcos%7Dn+%5Comega+t%2Bb_n+%5Cmathrm%7Bsin%7Dn+%5Comega+t%29,其中角频率

    equation?tex=%5Comega%3D%5Cfrac%7B2%5Cpi%7D%7BT%7D

    equation?tex=T

    equation?tex=f%28t%29的周期。对于周期函数,可以很容易地联想到最典型的正余弦函数,而且它们的周期大小是十分易于调整的,这也就启发我们去使用它们来表示各类周期函数。

    一、正交性

    傅里叶级数的基础是三角函数系

    equation?tex=1%2C%5Cmathrm%7Bsin%7Dx%2C%5Cmathrm%7Bcos%7Dx%2C%5Cmathrm%7Bsin%7D2x%2C%5Cmathrm%7Bcos%7D2x%2C...%2C%5Cmathrm%7Bsin%7Dnx%2C%5Cmathrm%7Bcos%7Dnx的正交性。正交是对于线性无关的抽象概念,类比向量正交即为内积等于零的概念,函数的正交同样采用内积等于零来判断。

    现定义两个实函数

    equation?tex=f%28x%29%2Cg%28x%29的内积。若

    equation?tex=f%28x%29%2Cg%28x%29在闭区间

    equation?tex=%5Ba%2Cb%5D上可积且平方可积,则它们的内积

    equation?tex=%3Cf%2Cg%3E%3D%5Cint_%7Ba%7D%5E%7Bb%7Df%28x%29g%28x%29%5Cmathrm%7Bd%7Dx

    equation?tex=%5B0%2C2%5Cpi%5D上,三角函数系是两两正交的,它们满足如下性质,

    equation?tex=%281%29%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cmathrm%7Bsin%7Dnx%5Cmathrm%7Bd%7Dx%3D0%28n%5Cin+%5Cmathbb%7BN%5E%2A%7D%29

    equation?tex=%282%29%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cmathrm%7Bcos%7Dnx%5Cmathrm%7Bd%7Dx%3D0%28n%5Cin+%5Cmathbb%7BN%5E%2A%7D%29

    equation?tex=%283%29%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cmathrm%7Bsin%7Dnx%5Cmathrm%7Bcos%7Dmx%5Cmathrm%7Bd%7Dx%3D0%28n%5Cne+m%2Cn%5Cin+%5Cmathbb%7BN%5E%2A%7D%2Cm%5Cin+%5Cmathbb%7BN%5E%2A%7D%29

    equation?tex=%284%29%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cmathrm%7Bsin%7Dnx%5Cmathrm%7Bsin%7Dmx%5Cmathrm%7Bd%7Dx%3D0%28n%5Cne+m%2Cn%5Cin+%5Cmathbb%7BN%5E%2A%7D%2Cm%5Cin+%5Cmathbb%7BN%5E%2A%7D%29

    equation?tex=%285%29%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cmathrm%7Bcos%7Dnx%5Cmathrm%7Bcos%7Dmx%5Cmathrm%7Bd%7Dx%3D0%28n%5Cne+m%2Cn%5Cin+%5Cmathbb%7BN%5E%2A%7D%2Cm%5Cin+%5Cmathbb%7BN%5E%2A%7D%29

    前两个式子显然成立,后三个式子的推导主要是利用积化和差公式,在这里给出最后一个式子的推导过程。

    equation?tex=%5Cbegin%7Balign%7D+%26%5Cquad%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cmathrm%7Bcos%7Dnx%5Cmathrm%7Bcos%7Dmx%5Cmathrm%7Bd%7Dx+%5C%5C+%26%3D+%5Cint_%7B0%7D%5E%7B2%5Cpi%7D%5Cfrac%7B%5Cmathrm%7Bcos%7D%28n%2Bm%29x%2B%5Cmathrm%7Bcos%7D%28n-m%29x%7D%7B2%7D%5Cmathrm%7Bd%7Dx%5C%5C+%26%3D%5Cfrac%7B1%7D%7B2%7D%5B%5Cfrac%7B%5Cmathrm%7Bsin%7D%28n%2Bm%29x%7D%7Bn%2Bm%7D%2B%5Cfrac%7B%5Cmathrm%7Bsin%7D%28n-m%29x%7D%7Bn-m%7D%5D%5E%7B2%5Cpi%7D_%7B0%7D%5C%5C+%26%3D0+%5Cend%7Balign%7D

    由此可以得到三角函数系

    equation?tex=1%2C%5Cmathrm%7Bsin%7D%5Comega+x%2C%5Cmathrm%7Bcos%7D%5Comega+x%2C%5Cmathrm%7Bsin%7D2%5Comega+x%2C%5Cmathrm%7Bcos%7D2%5Comega+x%2C...%2C%5Cmathrm%7Bsin%7Dn%5Comega+x%2C%5Cmathrm%7Bcos%7Dn%5Comega+x

    equation?tex=%5B0%2CT%5D上同样正交。

    二、展开为傅里叶级数

    傅里叶级数表示为

    equation?tex=f%28t%29%3D%5Cfrac%7Ba_0%7D%7B2%7D%2B%5Csum_%7Bn%3D1%7D%5E%7B%5Cinfty%7D%28a_n+%5Cmathrm%7Bcos%7Dn+%5Comega+t%2Bb_n+%5Cmathrm%7Bsin%7Dn+%5Comega+t%29,其中需要求出的是展开后的系数

    equation?tex=a_n%2Cb_n

    首先考虑最为特殊的

    equation?tex=a_0,对上式两侧同时从

    equation?tex=0

    equation?tex=T积分,可以由三角函数系的正交性发现求和号内的项均为0,

    因而得到

    equation?tex=%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bd%7Dt%3D%5Cint_%7B0%7D%5E%7BT%7D%5Cfrac%7Ba_0%7D%7B2%7D%5Cmathrm%7Bd%7Dt

    求出

    equation?tex=a_0%3D%5Cfrac%7B2%7D%7BT%7D%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bd%7Dt

    然后要求的是除

    equation?tex=a_0外的其余系数

    equation?tex=a_n%2Cb_n。先求

    equation?tex=a_n,在等号两侧同乘

    equation?tex=%5Cmathrm%7Bcos%7Dn%5Comega+t,再同时从

    equation?tex=0

    equation?tex=T积分,同样是由三角函数的正交性,可以得到等号右侧除了

    equation?tex=%5Cint_%7B0%7D%5E%7BT%7Da_n%5Cmathrm%7Bcos%5E2%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt不为0外,其余项皆等于0。

    于是便有

    equation?tex=%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bcos%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt%3D%5Cint_%7B0%7D%5E%7BT%7Da_n%5Cmathrm%7Bcos%5E2%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt

    计算得

    equation?tex=a_n%3D%5Cfrac%7B2%7D%7BT%7D%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bcos%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt

    对于

    equation?tex=b_n也是采取类似的方法,得

    equation?tex=b_n%3D%5Cfrac%7B2%7D%7BT%7D%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bsin%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt

    equation?tex=a_0同样满足

    equation?tex=a_n的等式,这便是傅里叶级数当中写成

    equation?tex=%5Cfrac%7Ba_0%7D%7B2%7D而非

    equation?tex=a_0的目的所在。因而可以将所有情况综合起来写为

    equation?tex=a_n%3D%5Cfrac%7B2%7D%7BT%7D%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bcos%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt%28n%5Cin%5Cmathbb%7BN%7D%29

    equation?tex=b_n%3D%5Cfrac%7B2%7D%7BT%7D%5Cint_%7B0%7D%5E%7BT%7Df%28t%29%5Cmathrm%7Bsin%7Dn%5Comega+t%5Cmathrm%7Bd%7Dt%28n%5Cin%5Cmathbb%7BN%5E%2A%7D%29

    三、傅里叶级数的收敛性

    与其它的级数展开相同,傅里叶级数同样需要判断收敛性,若级数不收敛于

    equation?tex=f%28t%29,则不能在两者之间画等号。关于傅里叶级数的收敛性目前没有它的充分必要条件,只有一些可以用来判断收敛的充分不必要条件。其中最常用的为狄利克雷条件对于一个周期为

    equation?tex=2%5Cpi的函数

    equation?tex=f%28x%29,如果它满足:

    (1)在一个周期内连续或只有有限个第一类间断点;

    (2)在一个周期内只有有限个极值点。

    那么

    equation?tex=f%28x%29的傅里叶级数收敛于

    equation?tex=%5Cfrac%7Bf%28x%2B0%29%2Bf%28x-0%29%7D%7B2%7D

    狄利克雷条件只是傅里叶级数收敛的充分条件,而非必要条件,级数收敛不代表该条件成立。

    由以上推导,我们便可以写出一个周期函数的傅里叶级数。

    例如周期为

    equation?tex=2%5Cpi的函数

    equation?tex=f%28x%29,在

    equation?tex=%28-%5Cpi%2C%5Cpi%5D

    equation?tex=f%28x%29%3Dx,求

    equation?tex=f%28x%29的傅里叶级数。

    equation?tex=a_n%3D%5Cfrac%7B1%7D%7B%5Cpi%7D%5Cint_%7B-%5Cpi%7D%5E%7B%5Cpi%7Dx%5Cmathrm%7Bcos%7Dnx%5Cmathrm%7Bd%7Dx%3D0

    equation?tex=b_n%3D%5Cfrac%7B1%7D%7B%5Cpi%7D%5Cint_%7B-%5Cpi%7D%5E%7B%5Cpi%7Dx%5Cmathrm%7Bsin%7Dnx%5Cmathrm%7Bd%7Dx%3D%28-1%29%5E%7Bn%2B1%7D%5Cfrac%7B2%7D%7Bn%7D

    狄利克雷条件显然成立,所以

    equation?tex=f%28x%29%3D%5Csum%5E%7B%5Cinfty%7D_%7Bn%3D1%7D%28-1%29%5E%7Bn%2B1%7D%5Cfrac%7B2%7D%7Bn%7D%5Cmathrm%7Bsin%7Dnx

    四、傅里叶级数的指数形式

    通过观察傅里叶级数的形式,不难发现它的每一项与欧拉公式的形式十分相似,可以通过代数变形来使用复指数表示傅里叶级数。

    equation?tex=i表示虚数单位,傅里叶级数的指数形式为

    equation?tex=f%28t%29%3D%5Csum%5E%7B%5Cinfty%7D_%7Bn%3D-%5Cinfty%7Dc_ne%5E%7Bin%5Comega+t%7D

    其中

    equation?tex=c_n%3D%5Cfrac%7B1%7D%7BT%7D%5Cint%5E%7BT%7D_%7B0%7Df%28t%29e%5E%7B-in%5Comega+t%7D%5Cmathrm%7Bd%7Dt

    指数形式与三角形式是相等的,推导如下

    equation?tex=%5Cbegin%7Balign%7D+%26%5Cquad%5Csum%5E%7B%5Cinfty%7D_%7Bn%3D-%5Cinfty%7Dc_ne%5E%7Bin%5Comega+t%7D+%5C%5C+%26%3Dc_0%2B%5Csum%5E%7B%5Cinfty%7D_%7Bn%3D1%7D%28c_ne%5E%7Bin%5Comega+t%7D%2Bc_%7B-n%7De%5E%7B-in%5Comega+t%7D%EF%BC%89+%5C%5C+%26%3Dc_0%2B%5Csum%5E%7B%5Cinfty%7D_%7Bn%3D1%7D%5B%28c_n%2Bc_%7B-n%7D%29%5Cmathrm%7Bcos%7Dn%5Comega+t%2Bi%28c_n-c_%7B-n%7D%29%5Cmathrm%7Bsin%7Dn%5Comega+t%5D+%5C%5C+%26%3D%5Cfrac%7Ba_0%7D%7B2%7D%2B%5Csum_%7Bn%3D1%7D%5E%7B%5Cinfty%7D%28a_n+%5Cmathrm%7Bcos%7Dn+%5Comega+t%2Bb_n+%5Cmathrm%7Bsin%7Dn+%5Comega+t%29+%5Cend%7Balign%7D

    五、傅里叶级数的几何意义

    关于傅里叶级数的几何意义,可以类比向量基底的概念。在欧几里得空间当中,可以通过选取一组正交基,使得空间内的所有向量都可以由这组正交基线性表出。

    傅里叶级数是利用三角函数系的正交性,通过这样一组正交基张成了函数空间,将这个函数空间当中的函数全部表示为三角函数的线性组合。

    考虑傅里叶级数的系数

    equation?tex=a_n%2Cb_n,令

    equation?tex=g%28x%29%3D%5Cmathrm%7Bcos%7Dn%5Comega+t

    equation?tex=h%28x%29%3D%5Cmathrm%7Bsin%7Dn%5Comega+t,则系数可以写作

    equation?tex=a_n%3D%5Cfrac%7B2%7D%7BT%7D%3Cf%2Cg%3E

    equation?tex=b_n%3D%5Cfrac%7B2%7D%7BT%7D%3Cf%2Ch%3E。正如向量空间当中基底分解的系数为

    equation?tex=%5Cfrac%7B1%7D%7B%7C%5Cvec%7Bx%7D%7C%7D%3C%5Cvec%7Bx%7D%2C%5Cvec%7Be%7D%3E,其中

    equation?tex=%5Cvec%7Be%7D为基向量,傅里叶级数所做的就是将函数

    equation?tex=f%28t%29投影到三角函数系这样一组正交基上,通过这组基线性表出

    equation?tex=f%28t%29

    六、傅里叶级数的物理意义

    如果将

    equation?tex=f%28t%29看作是一个周期信号,则傅里叶级数将

    equation?tex=f%28t%29分解到各个频率的正余弦波之上。

    例如

    equation?tex=f%28t%29表示如下信号

    傅里叶级数将其分解为以下四种信号

    傅里叶级数的局限性在于其只适用于周期函数 ,对于非周期函数我们需要更为强大的工具,通过对傅里叶级数的推广将会得到适用范围更加广泛的傅里叶变换。

    展开全文
  • 一. 简介离散傅里叶变换(Discrete Fourier Transform, DFT)是数字信号处理最重要基石之一,也...但在很长时间内,这种分析方法并没有引起更多重视,最主要原因在于这种方法运算量比较大。快速傅里叶变换(Fast...

    一. 简介

    离散傅里叶变换(Discrete Fourier Transform, DFT)是数字信号处理最重要的基石之一,也是对信号进行分析和处理时最常用的工具之一。在200多年前法国数学家、物理学家傅里叶提出后来以他名字命名的傅里叶级数之后,用DFT这个工具来分析信号就已经为人们所知。但在很长时间内,这种分析方法并没有引起更多的重视,最主要的原因在于这种方法运算量比较大。

    快速傅里叶变换(Fast Fourier Transform, FFT)是1965年由库利(T.W.Cooley)和图基(J.W.Tukey)共同提出的一种快速计算DFT的方法。这种方法充分利用了DFT运算中的对称性和周期性,从而将DFT运算量从N2减少到N*log2N。当N比较小时,FFT优势并不明显。但当N大于32开始,点数越大,FFT对运算量的改善越明显。比如当N为1024时,FFT的运算效率比DFT提高了100倍。

    在库利和图基提出的FFT算法中,其基本原理是先将一个N点时域序列的DFT分解为N个1点序列的DFT,然后将这样计算出来的N个1点序列DFT的结果进行组合,得到最初的N点时域序列的DFT值。实际上,这种基本的思想很早就由德国伟大的数学家高斯(1777年4月30日-1855年2月23日)提出过,只是由于当时尚欠东风——计算机还没发明。在20世纪60年代,伴随着计算机的发展和成熟,库利和图基的成果掀起了数字信号处理的革命,因而FFT发明者的桂冠才落在他们头上。

    库利和图基的FFT算法的最基本运算为蝶形运算,每个蝶形运算包括两个输入点,因而也称为基-2算法。在这之后,又有一些新的算法,进一步提高了FFT的运算效率,比如基-4算法、分裂基算法等。这些新算法对FFT运算效率的提高一般在50%以内,远远不如FFT对DFT运算的提高幅度。从这个意义上说,FFT算法是里程碑式的。可以说,正是计算机技术的发展和FFT的出现,才使得数字信号处理迎来了一个崭新的时代。

    只有周期信号可以通过傅里叶变换分解,随机信号、无规则信号是不能分解的。

    二. FFT(Matlab角度分析)

    现举例:

    假设我们有一个信号(如图一所示),它是一个与时间无关的常数。

    它含有

    ①2V的直流分量(注:信号的直流分量就是信号的平均值),

    ②频率为50Hz、相位为-30度、幅度为3V的交流信号,

    以及一个

    ③频率为75Hz、相位为90度、幅度为1.5V的交流信号。

    用数学表达式就是如下:

    b31edea489accd444c4bc99d2987c3f7.png

    式中cos参数的单位为弧度,所以-30度和90度要分别换算成弧度,即各除以180。换算后,是:

    47ff31781956ed245272c37e350454da.png

    拓展:

    傅里叶级数的物理意义很明确:把一个周期信号表示为一系列不同频率的复指数信号的线性组合。上公示:

    ff2ec961299289745ebd6ffc200fed19.png

    注意,这个公式的最小组成单位是复指数(复数指数)信号,也就是这个:

    857bf2c61663bd3aa84543d2414f70e6.png

    (

    拓展:欧拉公式,对任意实数x,都存在

    18a617dc6ac43c084147576a0255e68e.png

    其中e是自然对数的底数,i是虚数单位,而cos和sin则是余弦、正弦对应的三角函数,参数x则以弧度为单位。

    )

    我们知道,复指数信号不是实信号,它在现实中是不存在的,因为它带有虚部i。

    那如何用复指数信号合成实信号呢?

    答案很简单:只要两个复数共轭就好,实部相加,虚部相抵。也就是欧拉公式:

    42c974011baa45c00b70a68b2f37a6c4.png

    所以我们在用傅里叶级数分析信号的时候,频谱绝对是对称的,用很多对指数相反的复指数信号,就可以合成实信号,也就是说:有k,则必然有-k,否则无法合成实信号。

    综上,出现负频率的根本原因就是傅里叶级数(变换)的最小单位是复指数信号,如果用傅里叶级数的另一种形式,把信号表示为一系列正余弦信号的组合,就不存在负频率了。

    至于形象的理解,可以看那个帖子的第一页,有图很容易理解。

    倍频?

    这个解释起来比较简单,采样的过程其实就是周期采样信号乘以模拟信号。

    00164f719fb57922acff6cdab573dac0.png

    时域的乘积等于频域的卷积,就是下面这个样子:

    38c0246c193292180b4d0ca0fbe519ea.png

    最终采样之后的信号的频谱就是这样,形成了频谱的延拓,这就是题主说的倍频吧。

    例子:

    07cb234d66a9634dc40f004654dbaedc.png

    图一

    式中cos参数为弧度,所以-30度和90度要分别换算成弧度。我们以256Hz的采样(频)率对这个信号进行采样,总共采样256点。按照我们上面的分析,Fn=(n-1)*Fs/N,我们可以知道,每两个点之间的间距就是1Hz,第n个点的频率就是n-1。我们的信号有3个频率:0Hz、50Hz、75Hz,应该分别在第1个点、第51个点、第76个点上出现峰值,其它各点应该接近0。实际情况如何呢?我们来看看FFT的结果的模值如图所示。

    424d6d2ac8d016305c23db6c07782599.png

    图二 FFT结果

    从图中我们可以看到,在第1个采样点、第51个采样点、和第76个采样点附近有比较大的值。我们分别将这三个点附近的数据拿上来细看:

    1点: 512+0i

    2点: -2.6195E-14 - 1.4162E-13i

    3点: -2.8586E-14 - 1.1898E-13i

    50点:-6.2076E-13 - 2.1713E-12i

    51点:332.55 - 192i

    52点:-1.6707E-12 - 1.5241E-12i

    75点:-2.2199E-13 -1.0076E-12i

    76点:3.4315E-12 + 192i

    77点:-3.0263E-14 +7.5609E-13i

    很明显,1点、51点、76点的值都比较大,它附近的点值都很小,可以认为是0,即在那些频率点上的信号幅度为0。接着,我们来计算各点的幅度值。分别计算这三个点的模值,结果如下:

    1点: 512

    51点:384

    76点:192

    按照公式,可以计算出:

    直流分量为:512/N=512/256=2;

    50Hz信号的幅度为:384/(N/2)=384/(256/2)=3;

    75Hz信号的幅度为192/(N/2)=192/(256/2)=1.5。

    可见,从频谱分析出来的幅度是正确的。

    然后再来计算相位信息。直流信号没有相位可言,不用管它。先计算50Hz信号的相位,atan2(-192, 332.55)=-0.5236,结果是弧度,换算为角度就是180*-0.5236)/pi=-30.0001。再计算75Hz信号的相位,atan2(192, 3.4315E-12)=1.5708弧度,换算成角度就是180*1.5708/pi=90.0002。可见,相位也是对的。根据FFT结果以及上面的分析计算,我们就可以写出信号的表达式了,它就是我们开始提供的信号。

    总结:假设采样频率为Fs,采样点数为N,做FFT之后,某一点n(n从1开始)表示的频率为:Fn=(n-1)*Fs/N;该点的模值除以N/2就是对应该频率下的信号的幅度(对于直流信号是除以N);该点的相位即是对应该频率下的信号的相位。相位的计算可用函数atan2(b,a)计算。atan2(b,a)是求坐标为(a,b)点的角度值,范围从-pi到pi。要精确到xHz,则需要采样长度为1/x秒的信号,并做FFT。要提高频率分辨率,就需要增加采样点数,这在一些实际的应用中是不现实的,需要在较短的时间内完成分析。解决这个问题的方法有频率细分法,比较简单的方法是采样比较短时间的信号,然后在后面补充一定数量的0,使其长度达到需要的点数,再做FFT,这在一定程度上能够提高频率分辨力。具体的频率细分法可参考相关文献。

    [附录:本测试数据使用的matlab程序]

    close all; % 先关闭所有图片

    Adc=2;   % 直流分量幅度

    A1=3;    % 频率F1信号的幅度

    A2=1.5; % 频率F2信号的幅度

    F1=50;   % 信号1频率(Hz)

    F2=75;   % 信号2频率(Hz)

    Fs=256; % 采样频率(Hz)

    P1=-30; % 信号1相位(度)

    P2=90;   % 信号2相位(度)

    N=256;   % 采样点数

    t=[0:1/Fs:N/Fs]; % 采样时刻

    % 信号

    S=Adc+A1*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180);

    % 显示原始信号

    plot(S);

    title('原始信号');

    figure;

    Y = fft(S,N); % 做FFT变换

    Ayy = (abs(Y)); % 取模

    plot(Ayy(1:N)); % 显示原始的FFT模值结果

    title('FFT 模值');

    figure;

    Ayy=Ayy/(N/2);    % 换算成实际的幅度

    Ayy(1)=Ayy(1)/2;

    F=([1:N]-1)*Fs/N; % 换算成实际的频率值

    plot(F(1:N/2),Ayy(1:N/2));   % 显示换算后的FFT模值结果

    title('幅度-频率曲线图');

    figure;

    Pyy=[1:N/2];

    for i=[1:N/2]

    Pyy(i)=phase(Y(i)); % 计算相位

    Pyy(i)=Pyy(i)*180/pi; % 换算为角度

    end;

    plot(F(1:N/2),Pyy(1:N/2));   % 显示相位图

    title('相位-频率曲线图');

    Matlab的实验结果如下:

    c1ccc8a283ddb58c7a63d74fc321674e.png

    3bb415c4fada9323a8741f29e101110a.png

    f20bdd5e925b8b75bf54020632d1afde.png

    b3a576bc58d535b20b35ee1ea559e5c1.png

    看完这个你就明白谐波分析了。

    三. FFT(数学角度分析)

    FFT的具体计算过程可以通过蝶形图可视化:

    第一次分解:

    b57f4474ccdd055b9d65c423e55ebe31.png

    第二次分解:

    c7980065bb9a49805578f8f28f40d25a.png

    第三次分解:

    684a3d41044a9f6f73671a3fc6594cb9.png

    FFT与DFT的性能比较:

    1e08d4a788688fbdd29eaa60c91b18cb.png

    除了运算效率的大幅度提高外,FFT还大大降低了DFT运算带来的累计量化误差,这点常为人们所忽略。

    展开全文
  • 在数据处理和分析中,信号频率分析应用非常广泛,本期我将介绍一下数据处理中基本的傅里叶变换、带通滤波和小波变换的方法和技巧。1.快速傅里叶变换(Fast Fourier Transform, FFT)有一定数据分析基础读者应该...

    在数据处理和分析中,信号频率的分析应用非常广泛,本期我将介绍一下数据处理中基本的傅里叶变换、带通滤波和小波变换的方法和技巧。

    1.    快速傅里叶变换(Fast Fourier Transform, FFT)

    有一定数据分析基础的读者应该知道,FFT变换最常用的是将一个时域信号(信号强度随时间的变化)转变成一个频域信号(信号强度在频率上的变化),从而确定信号的频率分布,进一步采用滤波等措施滤除无用频率信号的干扰。这里我简单介绍一下基于Origin软件的FFT变换。

    实施例配置:Origin 9.0,待处理信号两列(X轴为时间(s),Y轴为信号)

    步骤1数据准备,示例中所准备的为发动机燃烧压力数据,采样频率为90 kHz,7200个数据点。

    2c59540d824b270e431c11b95d106bf7.png

    步骤2选中要进行FFT变换的数据列,在菜单栏中找到FFT变化选项,如图所示。

    f48136681ef0aaabd575ef7bea85dae0.png

    步骤3FFT基本设置,保持Input和SamplingInterval为默认值(其实是根据你所选的数据列得到的),在plot面板中勾选需要用到的输出项,通常Amplitude需要勾选,如图所示。

    5ac097caee1afcb50ef8f1106e7b3a58.png

        步骤4点击确定后输出相应数据,如图所示,选择Amplitude和Frequency两列进行作图,并调整横坐标和纵坐标的scale数值,如图所示,即得到了目标信号强度在频率上的分布曲线。这里所举的示例为发动机爆震时缸内压力的频率分布,特征信号分布在约7.4 kHz和12 kHz的频率位置。

    73193fcbe52cd93a7f89f7d53b944a56.png

    250bd1379beb5a90d31cdf74b81c3c4a.png

      2. 带通滤波(Band-pass filtering)

    在前面的FFT变换示例中,我们将一列时域信号转换为了一列频域信号,并分析了自己关注的特征信号所处的频率范围,考虑到在整个采集到信号的频率范围内(即0到0.5倍采样频率的频率区间)存在大量的干扰信号和噪声信号,因此需要有针对性地将我们所关注的信号进行提取,最常用的方法即为带通滤波。顾名思义,带通滤波就是指定某一段频率范围的信号保留,而其余范围的频率被滤除的一种方法。下面笔者基于Origin软件介绍如何进行带通滤波,以及带通滤波之后的信号会发生什么变化。

    步骤1数据准备,这里的数据准备与FFT变换中的数据准备相同。

    步骤2选中数据列,打开带通滤波面板,并进行基本设置。在filter type中选择band pass选项,设置低/高截止频率,取消掉keepDC offset的勾选(若勾选该项,则滤波结果存在一个Y轴位置的偏移),勾选Auto Preview可以在右侧看到滤波后信号、带通频率范围等预览图,设置好之后点击OK,即在原表格后面增加了两列带通滤波后的信号,原则上到这里带通滤波就已完成,为了表明带通滤波后的效果,笔者在步骤3和步骤4中分别进行了带通滤波前后信号在时域和频率上的对比,以便更加直观地看出效果。

    ca0ec7cecf2ad16b9ae76e34dffcdf4f.png

    7227833939b1248a9684181343043689.png

    470d725948fb913b0f1bbd918ce4671a.png

    步骤3带通滤波前后的时域信号对比,如图所示,笔者分别采用了0-4 kHz的带通滤波(或称为低通滤波)和4 kHz-20 kHz的带通滤波,可以发现低通滤波将原始信号中带毛刺的高频信号滤除了,只剩下光滑的低频信号(蓝色线条),而带通滤波则滤除了光滑的低频信号,反而将带毛刺的高频信号非常清晰地提取出来了(红色线条)。

    d430dcab4507427e5860434209c9477c.png

           步骤4带通滤波前后的频域信号对比。当然,带通滤波之后的数据也是可以进行FFT变换的,其结果如图红色的线条所示。与带通滤波前相比,保留的部分与滤波前的FFT结果没有区别,而被过滤掉的部分在FFT变化之后的幅值为0了,即红色线的0-4kHz和20 kHz以上的频率范围。

    b692e65937497260ddc89b81b4254280.png

    至此,采用Origin进行FFT变换和带通滤波的介绍就完成了,按照此步骤即可对数据进行基本的分析和滤波操作,但有的读者可能会觉得这种方式属于纯手工的操作,一次只能对一列数据进行操作,如果需要处理的数据量非常大应当如何应对?此时,笔者建议自己动手编写一个简单的自动滤波程序,这里简单介绍一下用Python 3版本如何进行带通滤波,算是抛砖引玉吧。

    3. Python3带通滤波器设计

          Python中的带通滤波函数在其scipy库的signal模块中,在使用时需要先安装相应的库,由于scipy库是基于numpy库的高级科学计算库,因此在python中需要同时安装numpy和scipy库,具体安装步骤非常简单,在安装Python后在命令提示符中先后输入pip install numpy和pip install scipy即可;若使用的Anaconda开发环境可不需要安装,开发环境已经事先将常用的科学计算库安装好。

    接下来我们贴出用python 3进行滤波的代码:

    import numpy as npfrom scipy import signal#带通滤波Fstop1 = 1000 #截止频率1Fstop2 = 3000 #截止频率2fs = 70000 #采样频率pressure1 = pressure.copy()pressure1[:,0] = np.arange(0, 2000/70000, 1/70000)  #时间单位为秒b, a = signal.butter(4,[2.0*Fstop1/fs,2.0*Fstop2/fs], 'bandpass') #8为滤波器阶数;filterpressure =signal.filtfilt(b,a,pressure1,axis=0) #axis为x轴,这里的pressure1包含两列数据,因此需要指明哪一列是x轴

         在上述代码中,首先导入numpy和signal库,进行带通滤波时需要定义截止频率1和截止频率2,以及采样频率。然后将需要滤波的数据存入数组变量pressure1中,需要注意的是这里的pressure1变量是一个两列的矩阵(array数据类型),然后将第一列重新更改为时间序列。然后计算带通滤波器中的中间系数b和a,再采用filtfilt(或者filter函数)函数进行数据滤波。

         为了读者更为清晰地理解带通滤波器的使用,这里对更加通用的Python数据滤波方法进行介绍,以作为参考。在滤波器设计中,butter函数是求Butterworth数字滤波器的系数,在求出系数后对信号进行滤波时用filter函数。[b,a]=butter(n,Wn),根据阶数n和归一化截止频率Wn计算ButterWorth滤波器分子分母系数(b为分子系数的矢量形式,a为分母系数的矢量形式)。Wn是归一化频率,具体计算方法是(2*截止频率)/采样频率(也就是除以fs/2)。

    [B,A]= BUTTER(N,Wn,'high')     #高通滤波器[B,A]= BUTTER(N,Wn,'low')      #低通滤波器[B,A]= BUTTER(N,Wn,'bandpass') #带通滤波器[B,A]= BUTTER(N,Wn,'stop')      #带阻滤波器

    当设计低通和高通时,Wn是一个值,表示截止频率;当设计带通和带阻时,Wn是一个二个元素的数组,表示通带或阻带的上下截止频率。频率的归一化是对fs/2进行归一。

         至此,用Python实现简单的带通滤波程序即介绍完毕,若要实现多文件的自动批量滤波还需采用Python实现多文件的读写操作,相关内容将在后续进行介绍。

    4.    连续小波变换(continuous wavelet transform)

    前面提到了傅里叶变换是将信号从时域转变为频域,即将信号从“强度-时间”转变为“强度-频率”的方法。但这种处理存在一个问题,就是将时间信号进行了压缩,或者说FFT变换后缺失了时间信息,无法确认某个频率上的特征信号是在哪个时间点上出现的。因此,为了解决这个问题,连续小波变换(CWT)应运而生,该方法利用基准小波函数的拉升、平移等操作对原始信号进行解析,可同时获得“强度-频率-时间”三个参数的信息。

    那么我们先直接看看信号经过CWT变换的效果如何把,将同一组数据(步骤1中的数据)进行CWT变换得到下图的结果。在频率上的结果与步骤1中的FFT变换结果相一致,但该变换还包含了时间轴,可以观察到产生相应信号的时间,以帮助对于信号更为准确的认知。

    f6ce0a5ac5e64233f39c2311570c2714.png

           对于CWT变换,目前基于origin软件虽然可以进行,但需要额外对频率和时间轴进行处理才能得到需要的结果,这里尚不作介绍,感兴趣的读者可以自行探索一下;基于Python的CWT变换笔者目前还未找到满意的方法,或者说还未基于相关函数得到满意的结果,因此这里主要介绍基于Matlab进行CWT的方法,示例代码如下:

    % 时频分析clcclear allclose all% 原始信号fs=1000;  %采样频率f1=50;f2=100;t=0:1/fs:1;s = sin(2*pi*f1*t)+sin(2*pi*f2*t);%+randn(1, length(t));% s = chirp(t,20,0.3,300);s = chirp(t,20,1,500,'q');figureplot(t, s)% 连续小波变换时频图wavename='cmor3-3';totalscal=256;Fc=centfrq(wavename); % 小波的中心频率c=2*Fc*totalscal;scals=c./(1:totalscal);f=scal2frq(scals,wavename,1/fs); % 将尺度转换为频率coefs=cwt(s,scals,wavename); % 求连续小波系数coefs_abs = abs(coefs);figureimagesc(t,f,abs(coefs));set(gca,'YDir','normal')colorbar;xlabel('时间t/s');ylabel('频率f/Hz');title('小波时频图');

    在上述示例代码中,用自己的需要进行CWT的数据替换掉示例数据生成的部分代码,修改对应的采样频率即可。

    (由于之前的没有留言功能,这里重新再发一遍。需要留言的朋友可点击下面的留言区进行留言)留言区
    展开全文
  • 采用“逆规则”傅里叶展开法来提高正交浮雕双周期光栅问题收敛性,把用在单周期光栅中反射透射系数阵算法推广到正交双周期光栅中,并充分利用光栅对称性和对角周期性,在保证计算准确度和稳定性条件下,把计算...
  • 稀疏快速傅里叶变换(SFFT)算法只需计算干涉光信号主要频谱成分, 通过频谱重排、窗函数滤波、频域降采样, 以及循环定位与估值, 能快速地计算出信号频谱中K个极大的傅里叶系数, 从中找出腔长对应频率, 解调出腔长...
  • 以SO2-4为例,研究采用傅里叶变换红外光谱(FTIR)技术,对水溶性气溶胶离子消光系数进行测量,并通过理论分析计算得到其复折射率N过程。通过测量大气气溶胶水溶性SO2-4离子质量消光截面k和消光系数α,再根据...
  • 我们知道,对于足够光滑的函数,其泰勒展开(Taylor series)为:其中问题是:应该如何使用数值方法计算系数呢?答案是:「使用快速傅里叶变换」。...因而我们可以用计算傅里叶展开系数的快速傅里...
  • 针对这一局限,运用矩形网格细分的方法得到了计算二维周期光栅的相对介电常数傅里叶系数的通用公式,它能够对任意形状的二维周期光栅相对介电常数分布进行傅里叶级数展开,并运用于衍射问题的RCWA方法分析之中。
  • 1 特征提取流程 在语音识别和话者识别方面,最常用到语音特征就是梅尔倒谱系数(Mel-scaleFrequency ... 2 傅里叶家族 快速傅里叶变换即利用计算机计算离散傅里叶变换(DFT)高效、快速计算方法的统称,简...
  • 号的直流分量和各次谐波的幅值和相角的特点,大大简化了谐波分析的计算。与梯形算法相比,该算法具有 精度高、计算量小、更易在数字信号处理器上实现等优点。因而可以取代梯形算法来计算谐波系数~针对 F丌计算,还...
  • 实验结果表明,该方法的优点在于描述同类形状时,特征向量之间相关系数高,具有很好平移、旋转以及尺度不变性;在描述不同类形状时,相关系数低,有很强形状区分能力。该方法在形状分类实验中也有较高检索...
  • 针对由理论计算得到的解调系数无法实现强度调制偏振光谱仪实验系统(以下简称“实验系统”)测量数据解调处理的问题,提出了测量参考光获取实验系统解调系数的解决方法。该方法通过测量已知偏振态参考光经过实验系统...
  • 基于相位频谱系数的理论分析, 综合考虑条纹自身振幅对频谱幅度的放缩影响, 利用频谱系数最大值得到条纹振幅, 进而计算得到适用于散斑干涉条纹图的窗口傅里叶变换滤波阈值。经过模拟散斑干涉条纹图和实验所得真实条纹...
  • 方法的优点在于只采样全息图部分有用系数就能很好地恢复出原始图像,从而解决了传感器采样数据过大问题,降低了计算复杂度。仿真实验表明,20%压缩采样时,重构出全息图相关系数为0.85,而50%时该系数为...
  • 计算中,预测系数必须满足Lenvinson-Durbin递推关系,并且可直接计算而无需首先计算自相关系数。这种方法的优点就是对未知数据不需要做任何假设,估计精度较高。其缺点是在分析噪声中正弦信号时,会引...
  • 通过对施加电学调制信号做傅里叶变换并结合器件传递函数,给出了一种新型数值方法来建模和表征器件静态和动态特性,推导并得到了器件状态函数、静态响应、调制响应、三阶内调响应等表达式。计算和分析结果...
  • 快速傅里叶变换教程

    2020-08-16 22:21:14
    当我们要计算一元多项式乘积时,我们第一反应可能是:一项一项对应去乘。假设两个多项式次数均不超过n,则上述算法复杂度为O(n2)O(n^2)O(n2)。当n较大时,该算法不能在时限内跑完。这时,我们需要使用一个强大...
  • 在上一篇文章中,我们介绍了 Matlab 中 FFT 计算的...回顾 周期函数傅里叶系数的计算将积分区间 进行等距剖分使用矩形公式(梯形公式同理)进行数值离散重点周期函数 「采样」时「取左端点不取右端点」该部分的「主...
  • 在上一篇文章中,我们介绍了 Matlab 中 FFT 计算的...回顾 周期函数傅里叶系数的计算将积分区间 进行等距剖分使用矩形公式(梯形公式同理)进行数值离散重点周期函数 「采样」时「取左端点不取右端点」该部分的「主...
  • 在上一篇文章中,我们介绍了 Matlab 中 FFT 计算的...回顾 周期函数傅里叶系数的计算将积分区间 进行等距剖分使用矩形公式(梯形公式同理)进行数值离散重点周期函数 「采样」时「取左端点不取右端点」该部分的「主...
  • 快速傅里叶变换即利用计算机计算离散傅里叶变换(DFT)高效、快速计算方法的统称,简称FFT。 傅里叶的两个论点:1 周期信号都可以表示成谐波关系正弦信号加权和。 2 非周期信号都可以用正
  • 本期推文有理论有案例,有兴趣读者仔细阅读。 过冷水之前有和大家讲傅里叶级数,并给出以一个函数用傅里叶级数近似案例。本期就进一步详讲傅里叶级数。...我们继续采用两边积分的方法系数an、
  • 1 特征提取流程 在语音识别和话者识别方面,最常用到语音特征就是梅尔倒谱系数(Mel-scaleFrequency ... 2 快速傅里叶变换 快速傅里叶变换即利用计算机计算离散傅里叶变换(DFT)高效、快速计算方法的统称...
  • 5.2.2 近似系数的确定 5.2.3 二、三、四、六、八方向上的算子分裂 5.3 由Kirchhoff积分解导出偏移公式 5.4 混合法四方向分裂偏移 5.4.1 混合法四方向分裂 5.4.2 分裂误差 5.4.3 螺旋线上的四方向波场外推 5.4.4 数值...
  • 什么是FFT FFT是用来快速计算两个多项式相乘一种算法。 如果我们暴力计算两个...显然,我们最传统的方法表示多项式就是表示它的系数就好。但是,如果我们用系数计算两个多项式相乘,复杂度无论如何都是\(O(n^2)...
  • 然后,以傅里叶变换系数构造训练字典,将待测故障类型振动信号傅里叶变换系数在该训练字典上进行稀疏分解,求取稀疏系数;最后,利用重构信号最小误差判别故障类型。仿真和测试结果表明,该方法能有效诊断出矿物传送设备...
  • 有利于运用傅里叶变换,将相关系数计算复杂度高时域转换到计算复杂度低频域来实现,并且能一次算出目标分布场和检测区域所有候选分布场相似度,从而保证算法实时性和全局搜索能力,克服稀疏采样方法的随机...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

傅里叶系数的计算方法