乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      fft算法

       啟蒙彩魂 2010-12-29
      // FFT_t.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
      //
      #include "stdafx.h"
      #include "complex.h"
      #include "cmath"
      #include "iostream"
      #include "stdio.h"
      #include "fstream"
      using namespace std;
      #include "stdio.h"
      #define NUM  128

      int changeadd(int k,int m)//倒序方法一,直接算出其值
      {
      //m是二進(jìn)制數(shù)的位數(shù)
      //這個(gè)地主要注意的是當(dāng)m很大時(shí),K1可能會(huì)超出范圍
      int k1=0;
      for(int i=0;i<m;i++)
      {
        if(k&(int)pow(2.0,i))
         k1+=pow(2.0,m-i-1);
      }
      return k1;
      }
      void FFT(complex *in,complex * out,int M)
      {
      ofstream file("fft.dat");
      int N=pow(2.0,M);
      out[0]=in[0];
      out[N-1]=in[N-1];
      complex t;
      for(int i=1;i<N-1;i++)
      {
        if(i<changeadd(i,M))
        {
        t=in[changeadd(i,M)];
        out[changeadd(i,M)]=in[i];
        out[i]=t;
        }
      }
      file<<"in"<<endl;
      for(int i=0;i<N;i++)
        file<<in[i];
      //cout<<"out"<<endl;
      //for(int i=0;i<N;i++)
      // cout<<out[i];
      for(int L=1;L<=M;L++)//L第幾層蝶形,
      {
        int B=pow(2.0,L-1);//B同一個(gè)蝶形的兩個(gè)點(diǎn)間的距離
       
        for(int J=0;J<=B-1;J++)
        {
         int P=pow(2.0,M-L)*J;
        
         complex temp(cos(2*PI*P/N),-sin(2*PI*P/N));
         file<<temp;
         for(int K=J;K<=N-1;K+=pow(2.0,L))
         {
          //if(L==1&&J==0&&K==2){__asm int 3}
          out[K]=out[K]+out[K+B]*temp;
          out[K+B]=out[K]-out[K+B]*temp*2;
         }
        }
        //觀察蝶形的具體樣子
        //file<<"第"<<L<<"層"<<endl;
        //for(int i=0;i<N;i++)
        //{
        // file<<out[i];
        //}
        //file<<endl;
      }
      file.close();
      }
      //////////////////////////////////////////////////////
      ////在網(wǎng)上找到的一種算法
      void _FFT(complex   Input[],int Length,int isign)
      {
      //isign代表是正還是逆變換 -1表示正變換,1表示逆變換
      ofstream _file("_fft.dat");
      int   l,i,m,mr=0;  
      complex   t;  
      float   tm,pisign=isign*PI;  
      for(m=1;m<Length;m++)//倒序
      {  
        l=Length>>1;  
        while(mr+l>=Length)   l>>=1;  
        mr=mr%l+l;  
        if(mr>m)
        {  
         t=Input[m];  
         Input[m]=Input[mr];  
         Input[mr]=t;  
        }  
      }  
      _file<<"in"<<endl;
      for(int i=0;i<Length;i++)
      _file<<Input[i];
      /////蝶形計(jì)算
      l=1;  
      while(l<Length)
      {  
        for(m=0;m<l;m++)
        {  
         tm=pisign/l*m;  
         _file<<complex(cos(tm),sin(tm));
         for(i=m;i<Length;i+=l<<1)
         {  
          //if(l==1&&m==0&&i==2){__asm int 3}
          t=Input[i+l]*complex(cos(tm),sin(tm));  
          Input[i+l]=Input[i]-t;  
          Input[i]+=t;  
         }  
        }  
        l<<=1;
      // _file<<"第"<<l<<"層"<<endl;
      // for(int i=0;i<Length;i++)
      // {
      // 
      //  _file<<Input[i];
      // }
      // _file<<endl;
      }  
      if(isign==1)   for(l=0;l<Length;l++)   Input[l]/=Length;  
      _file.close();
      }
      //////////////////////////////////////
      int _tmain(int argc, _TCHAR* argv[])
      {
      complex in[NUM];
      complex _in[NUM];
      double t;
      int x=log(NUM*1.0)/log(2.0);
      for(int i=0;i<NUM;i++)
      {
        t=sin(0.01*2*PI*i)+sin(0.02*2*PI*i)+sin(0.4*2*PI*i);
        _in[i]=in[i]=complex(t,0);
      }
      FFT(in,in,x);
      _FFT(_in,NUM,-1);
      //for(int i=0;i<NUM;i++)
      // cout<<in[i];
      //int x;
      //while(1)
      //{
      // cin>>x;
      // if(x==0)break;
      // //changeadd;
      // printf("%x\n",x);
        //printf("%x\n",changeadd(2,7));
      //}
      return 0;
      }
      里邊的調(diào)試代碼我也沒(méi)有刪除,能幫助你理解

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多