亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mixfft.c

?? 幾個FFT算法
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>


/************************************************************************
  fft(int n, double xRe[], double xIm[], double yRe[], double yIm[])
 ------------------------------------------------------------------------
  NOTE : This is copyrighted material, Not public domain. See below.
 ------------------------------------------------------------------------
  Input/output:
      int n          transformation length.
      double xRe[]   real part of input sequence.
      double xIm[]   imaginary part of input sequence.
      double yRe[]   real part of output sequence.
      double yIm[]   imaginary part of output sequence.
 ------------------------------------------------------------------------
  Function:
      The procedure performs a fast discrete Fourier transform (FFT) of
      a complex sequence, x, of an arbitrary length, n. The output, y,
      is also a complex sequence of length n.

      y[k] = sum(x[m]*exp(-i*2*pi*k*m/n), m=0..(n-1)), k=0,...,(n-1)

      The largest prime factor of n must be less than or equal to the
      constant maxPrimeFactor defined below.
 ------------------------------------------------------------------------
  Author:
      Jens Joergen Nielsen            For non-commercial use only.
      Bakkehusene 54                  A $100 fee must be paid if used
      DK-2970 Hoersholm               commercially. Please contact.
      DENMARK

      E-mail : jjn@get2net.dk   All rights reserved. October 2000.
      Homepage : http://home.get2net.dk/jjn
 ------------------------------------------------------------------------
  Implementation notes:
      The general idea is to factor the length of the DFT, n, into
      factors that are efficiently handled by the routines.

      A number of short DFT's are implemented with a minimum of
      arithmetical operations and using (almost) straight line code
      resulting in very fast execution when the factors of n belong
      to this set. Especially radix-10 is optimized.

      Prime factors, that are not in the set of short DFT's are handled
      with direct evaluation of the DFP expression.

      Please report any problems to the author. 
      Suggestions and improvements are welcomed.
 ------------------------------------------------------------------------
  Benchmarks:                   
      The Microsoft Visual C++ compiler was used with the following 
      compile options:
      /nologo /Gs /G2 /W4 /AH /Ox /D "NDEBUG" /D "_DOS" /FR
      and the FFTBENCH test executed on a 50MHz 486DX :
      
      Length  Time [s]  Accuracy [dB]

         128   0.0054     -314.8   
         256   0.0116     -309.8   
         512   0.0251     -290.8   
        1024   0.0567     -313.6   
        2048   0.1203     -306.4   
        4096   0.2600     -291.8   
        8192   0.5800     -305.1   
         100   0.0040     -278.5   
         200   0.0099     -280.3   
         500   0.0256     -278.5   
        1000   0.0540     -278.5   
        2000   0.1294     -280.6   
        5000   0.3300     -278.4   
       10000   0.7133     -278.5   
 ------------------------------------------------------------------------
  The following procedures are used :
      factorize       :  factor the transformation length.
      transTableSetup :  setup table with sofar-, actual-, and remainRadix.
      permute         :  permutation allows in-place calculations.
      twiddleTransf   :  twiddle multiplications and DFT's for one stage.
      initTrig        :  initialise sine/cosine table.
      fft_4           :  length 4 DFT, a la Nussbaumer.
      fft_5           :  length 5 DFT, a la Nussbaumer.
      fft_10          :  length 10 DFT using prime factor FFT.
      fft_odd         :  length n DFT, n odd.
*************************************************************************/

#define  maxPrimeFactor        37
#define  maxPrimeFactorDiv2    (maxPrimeFactor+1)/2
#define  maxFactorCount        20

static double  c3_1 = -1.5000000000000E+00;  /*  c3_1 = cos(2*pi/3)-1;          */
static double  c3_2 =  8.6602540378444E-01;  /*  c3_2 = sin(2*pi/3);            */
                                          
static double  u5   =  1.2566370614359E+00;  /*  u5   = 2*pi/5;                 */
static double  c5_1 = -1.2500000000000E+00;  /*  c5_1 = (cos(u5)+cos(2*u5))/2-1;*/
static double  c5_2 =  5.5901699437495E-01;  /*  c5_2 = (cos(u5)-cos(2*u5))/2;  */
static double  c5_3 = -9.5105651629515E-01;  /*  c5_3 = -sin(u5);               */
static double  c5_4 = -1.5388417685876E+00;  /*  c5_4 = -(sin(u5)+sin(2*u5));   */
static double  c5_5 =  3.6327126400268E-01;  /*  c5_5 = (sin(u5)-sin(2*u5));    */
static double  c8   =  7.0710678118655E-01;  /*  c8 = 1/sqrt(2);    */

static double   pi;
static int      groupOffset,dataOffset,blockOffset,adr;
static int      groupNo,dataNo,blockNo,twNo;
static double   omega, tw_re,tw_im;
static double   twiddleRe[maxPrimeFactor], twiddleIm[maxPrimeFactor],
                trigRe[maxPrimeFactor], trigIm[maxPrimeFactor],
                zRe[maxPrimeFactor], zIm[maxPrimeFactor];
static double   vRe[maxPrimeFactorDiv2], vIm[maxPrimeFactorDiv2];
static double   wRe[maxPrimeFactorDiv2], wIm[maxPrimeFactorDiv2];

void factorize(int n, int *nFact, int fact[])
{
    int i,j,k;
    int nRadix;
    int radices[7];
    int factors[maxFactorCount];

    nRadix    =  6;  
    radices[1]=  2;
    radices[2]=  3;
    radices[3]=  4;
    radices[4]=  5;
    radices[5]=  8;
    radices[6]= 10;

    if (n==1)
    {
        j=1;
        factors[1]=1;
    }
    else j=0;
    i=nRadix;
    while ((n>1) && (i>0))
    {
      if ((n % radices[i]) == 0)
      {
        n=n / radices[i];
        j=j+1;
        factors[j]=radices[i];
      }
      else  i=i-1;
    }
    if (factors[j] == 2)   /*substitute factors 2*8 with 4*4 */
    {   
      i = j-1;
      while ((i>0) && (factors[i] != 8)) i--;
      if (i>0)
      {
        factors[j] = 4;
        factors[i] = 4;
      }
    }
    if (n>1)
    {
        for (k=2; k<sqrt(n)+1; k++)
            while ((n % k) == 0)
            {
                n=n / k;
                j=j+1;
                factors[j]=k;
            }
        if (n>1)
        {
            j=j+1;
            factors[j]=n;
        }
    }               
    for (i=1; i<=j; i++)         
    {
      fact[i] = factors[j-i+1];
    }
    *nFact=j;
}   /* factorize */

/****************************************************************************
  After N is factored the parameters that control the stages are generated.
  For each stage we have:
    sofar   : the product of the radices so far.
    actual  : the radix handled in this stage.
    remain  : the product of the remaining radices.
 ****************************************************************************/

void transTableSetup(int sofar[], int actual[], int remain[],
                     int *nFact,
                     int *nPoints)
{
    int i;

    factorize(*nPoints, nFact, actual);
    if (actual[1] > maxPrimeFactor)
    {
        printf("\nPrime factor of FFT length too large : %6d",actual[1]);
        printf("\nPlease modify the value of maxPrimeFactor in mixfft.c");
        exit(1);
    }
    remain[0]=*nPoints;
    sofar[1]=1;
    remain[1]=*nPoints / actual[1];
    for (i=2; i<=*nFact; i++)
    {
        sofar[i]=sofar[i-1]*actual[i-1];
        remain[i]=remain[i-1] / actual[i];
    }
}   /* transTableSetup */

/****************************************************************************
  The sequence y is the permuted input sequence x so that the following
  transformations can be performed in-place, and the final result is the
  normal order.
 ****************************************************************************/

void permute(int nPoint, int nFact,
             int fact[], int remain[],
             double xRe[], double xIm[],
             double yRe[], double yIm[])

{
    int i,j,k;
    int count[maxFactorCount]; 

    for (i=1; i<=nFact; i++) count[i]=0;
    k=0;
    for (i=0; i<=nPoint-2; i++)
    {
        yRe[i] = xRe[k];
        yIm[i] = xIm[k];
        j=1;
        k=k+remain[j];
        count[1] = count[1]+1;
        while (count[j] >= fact[j])
        {
            count[j]=0;
            k=k-remain[j-1]+remain[j+1];
            j=j+1;
            count[j]=count[j]+1;
        }
    }
    yRe[nPoint-1]=xRe[nPoint-1];
    yIm[nPoint-1]=xIm[nPoint-1];
}   /* permute */


/****************************************************************************
  Twiddle factor multiplications and transformations are performed on a
  group of data. The number of multiplications with 1 are reduced by skipping
  the twiddle multiplication of the first stage and of the first group of the
  following stages.
 ***************************************************************************/

void initTrig(int radix)
{
    int i;
    double w,xre,xim;

    w=2*pi/radix;
    trigRe[0]=1; trigIm[0]=0;
    xre=cos(w); 
    xim=-sin(w);
    trigRe[1]=xre; trigIm[1]=xim;
    for (i=2; i<radix; i++)
    {
        trigRe[i]=xre*trigRe[i-1] - xim*trigIm[i-1];
        trigIm[i]=xim*trigRe[i-1] + xre*trigIm[i-1];
    }
}   /* initTrig */

void fft_4(double aRe[], double aIm[])
{
    double  t1_re,t1_im, t2_re,t2_im;
    double  m2_re,m2_im, m3_re,m3_im;

    t1_re=aRe[0] + aRe[2]; t1_im=aIm[0] + aIm[2];
    t2_re=aRe[1] + aRe[3]; t2_im=aIm[1] + aIm[3];

    m2_re=aRe[0] - aRe[2]; m2_im=aIm[0] - aIm[2];
    m3_re=aIm[1] - aIm[3]; m3_im=aRe[3] - aRe[1];

    aRe[0]=t1_re + t2_re; aIm[0]=t1_im + t2_im;
    aRe[2]=t1_re - t2_re; aIm[2]=t1_im - t2_im;
    aRe[1]=m2_re + m3_re; aIm[1]=m2_im + m3_im;
    aRe[3]=m2_re - m3_re; aIm[3]=m2_im - m3_im;
}   /* fft_4 */


void fft_5(double aRe[], double aIm[])
{    
    double  t1_re,t1_im, t2_re,t2_im, t3_re,t3_im;
    double  t4_re,t4_im, t5_re,t5_im;
    double  m2_re,m2_im, m3_re,m3_im, m4_re,m4_im;
    double  m1_re,m1_im, m5_re,m5_im;
    double  s1_re,s1_im, s2_re,s2_im, s3_re,s3_im;
    double  s4_re,s4_im, s5_re,s5_im;

    t1_re=aRe[1] + aRe[4]; t1_im=aIm[1] + aIm[4];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人在线综合网站| www国产成人免费观看视频 深夜成人网| 欧美男生操女生| 久久久.com| 日本成人在线不卡视频| 成人毛片在线观看| 欧美成va人片在线观看| 亚洲国产sm捆绑调教视频 | 婷婷夜色潮精品综合在线| 国产盗摄一区二区| 精品入口麻豆88视频| 亚洲国产一二三| 91官网在线观看| 中文字幕va一区二区三区| 黄色精品一二区| 91精品国产麻豆| 一区2区3区在线看| 日本乱人伦aⅴ精品| 中文字幕日本乱码精品影院| 国产一区欧美日韩| 亚洲精品在线三区| 久久精品72免费观看| 91麻豆精品国产91久久久久久 | 人人超碰91尤物精品国产| 色综合天天性综合| 自拍av一区二区三区| 成人免费看视频| 国产精品丝袜在线| 成人短视频下载| 国产欧美精品在线观看| 国产成人自拍网| 久久久久国产精品厨房| 国产福利精品导航| 国产精品无人区| 97se亚洲国产综合自在线| 亚洲欧洲日韩av| 日本丶国产丶欧美色综合| 亚洲一区二区三区在线播放| 日韩一区和二区| 日本aⅴ精品一区二区三区 | 欧美午夜精品久久久久久超碰| 亚洲精品视频在线观看网站| 色欧美乱欧美15图片| 亚洲综合区在线| 4438x亚洲最大成人网| 免费欧美日韩国产三级电影| 日韩精品一区二区三区在线| 国产一区二区三区综合| 亚洲欧洲一区二区在线播放| 欧美专区亚洲专区| 麻豆国产一区二区| 国产精品免费av| 色婷婷国产精品| 美女任你摸久久| 久久精品亚洲精品国产欧美| 99免费精品视频| 亚洲国产精品久久久久秋霞影院| 日韩美一区二区三区| 成人免费福利片| 亚洲一区视频在线| 欧美成人bangbros| 一本色道综合亚洲| 五月天一区二区| 久久免费视频色| 欧美在线视频你懂得| 久久99精品久久久久久| 最新热久久免费视频| 欧美肥胖老妇做爰| 成人中文字幕合集| 秋霞成人午夜伦在线观看| 国产欧美日韩在线| 欧美一区二区三区四区在线观看| 国产不卡在线播放| 亚洲va天堂va国产va久| 国产日产精品1区| 欧美日韩精品一区二区三区| 国产成人午夜精品影院观看视频| 亚洲成人精品影院| 国产精品伦一区| 日韩免费观看高清完整版| 99国产精品久| 精品在线你懂的| 亚洲v中文字幕| 亚洲视频一区在线观看| 26uuu亚洲综合色欧美| 欧美日韩性生活| 成人18精品视频| 国产成人免费9x9x人网站视频| 日韩高清不卡在线| 亚洲午夜免费福利视频| 亚洲欧洲日韩在线| 国产欧美日韩在线视频| 精品99久久久久久| 日韩亚洲欧美在线| 欧美一区二区成人| 欧美日本一区二区三区四区| 色综合久久久久久久| 99久久久久久| 成人黄色片在线观看| 欧美一区中文字幕| 日本精品一级二级| 91猫先生在线| 99国产精品久久久久久久久久 | 国产精品久久久久久久久图文区| 日韩免费福利电影在线观看| 这里只有精品电影| 欧美日韩一卡二卡| 欧美日韩国产另类不卡| 欧美日韩午夜在线| 欧美日韩黄色一区二区| 欧美吻胸吃奶大尺度电影 | 亚洲成av人综合在线观看| 亚洲欧美国产77777| 中文字幕在线观看一区二区| 国产精品区一区二区三| 久久精品一区二区三区av| 国产亲近乱来精品视频| 国产欧美视频一区二区| 中文成人av在线| 日韩码欧中文字| 亚洲伊人伊色伊影伊综合网| 亚洲在线成人精品| 性做久久久久久久久| 免费精品视频在线| 国产一区啦啦啦在线观看| 成人伦理片在线| 色八戒一区二区三区| 欧美午夜影院一区| 欧美一级午夜免费电影| 久久久亚洲午夜电影| 中文字幕一区二区三区视频| 一区二区三区在线影院| 亚洲成人免费观看| 久久激五月天综合精品| 成a人片亚洲日本久久| 91黄视频在线| 亚洲精品一区二区三区影院 | 欧美va天堂va视频va在线| 2021久久国产精品不只是精品| 欧美激情一区二区| 国产乱码精品一区二区三区av | 91精品国产入口在线| 欧美精品一区二区三区四区| 国产精品久久久久久久久免费樱桃| 亚洲男同1069视频| 久99久精品视频免费观看| 成人免费黄色大片| 欧美巨大另类极品videosbest | 精品福利av导航| 国产精品久久久久9999吃药| 午夜欧美电影在线观看| 国产精品一区三区| 欧美性做爰猛烈叫床潮| 久久久午夜电影| 性久久久久久久| 成人动漫中文字幕| 欧美成人欧美edvon| 亚洲欧美日韩电影| 国产呦精品一区二区三区网站| 欧美专区日韩专区| 国产欧美一区二区三区在线老狼| 亚洲图片欧美一区| 国产99久久久久| 日韩欧美国产一区二区三区 | 精品一区二区精品| 一本色道a无线码一区v| 26uuuu精品一区二区| 夜色激情一区二区| 丰满亚洲少妇av| 日韩欧美色综合| 亚洲线精品一区二区三区| 成人激情免费网站| 精品国产网站在线观看| 天天综合色天天综合| 一本久久a久久精品亚洲| 国产欧美一区二区精品忘忧草 | 久久伊人蜜桃av一区二区| 六月丁香婷婷久久| 国产一区二区视频在线| 欧美色视频在线| 国产精品美女www爽爽爽| 激情五月婷婷综合网| 国产精品久久网站| 日韩av一区二区三区四区| 欧美亚洲国产一区二区三区| 99久久精品国产精品久久| 亚洲国产精品二十页| 91丝袜美腿高跟国产极品老师 | 婷婷综合另类小说色区| 日韩一卡二卡三卡国产欧美| 激情亚洲综合在线| 国产精品天干天干在观线| 91福利精品视频| 青青草伊人久久| 久久精品夜色噜噜亚洲a∨| 91理论电影在线观看| 日韩av电影天堂| 精品免费国产二区三区| 不卡欧美aaaaa| 亚洲gay无套男同|