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

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

?? fft.cpp

?? 一種混合高速的FFT算法 可以快速計算高階FFT
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// FFT.cpp: implementation of the FFT class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "FFT.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

FFT::FFT()
{

}
FFT::FFT(int len, double inRe[],double inIm[])
{
	//預設參數初始化
	c3_1 = -1.5000000000000E+00;  /*  c3_1 = cos(2*pi/3)-1;          */
	c3_2 =  8.6602540378444E-01;  /*  c3_2 = sin(2*pi/3);            */
	
	u5   =  1.2566370614359E+00;  /*  u5   = 2*pi/5;                 */
	c5_1 = -1.2500000000000E+00;  /*  c5_1 = (cos(u5)+cos(2*u5))/2-1;*/
	c5_2 =  5.5901699437495E-01;  /*  c5_2 = (cos(u5)-cos(2*u5))/2;  */
	c5_3 = -9.5105651629515E-01;  /*  c5_3 = -sin(u5);               */
	c5_4 = -1.5388417685876E+00;  /*  c5_4 = -(sin(u5)+sin(2*u5));   */
	c5_5 =  3.6327126400268E-01;  /*  c5_5 = (sin(u5)-sin(2*u5));    */
	c8   =  7.0710678118655E-01;  /*  c8 = 1/sqrt(2);    */
	
	radixLen=6;
	radices[1]=  2;
    radices[2]=  3;
    radices[3]=  4;
    radices[4]=  5;
    radices[5]=  8;
    radices[6]= 10;
	
	setLength(len);

	setX(inRe,inIm);
}

FFT::~FFT()
{

}

void FFT::setX(double inRe[], double inIm[])
{
	int i;

	for( i = 0 ; i <length ; i++ )
	{
		xRe[i]=inRe[i];
		xIm[i]=inIm[i];
	}
}

void FFT::getY(double outRe[], double outIm[])
{
	int i;

	for( i = 0 ; i <= maxIndex ; i++ )
	{
		outRe[i]=yRe[i];
		outIm[i]=yIm[i];
	}
}

void FFT::setLength(int len)
{
	if(len>=0)
		length=len;
	else{
		cout<<"FAIL! The FFT length cannot be negative!"<<endl;
		
	}
}
int FFT::getLength(void)
{
	return length;
}

void FFT::setRadices(int rLen, int r[])
{
	int i;
	radixLen=rLen;
	for( i=1 ; i <= radixLen ; i++ )
		radices[i]=r[i];
}


void FFT::fft(void)
{
	int sofarRadix[maxFactorCount], 
		actualRadix[maxFactorCount], 
		remainRadix[maxFactorCount];
  
    int count;
	factorize();
    transTableSetup(sofarRadix, actualRadix, remainRadix);
    permute(remainRadix);
	
    for (count=1; count<=factLen; count++)
		twiddleTransf(sofarRadix[count], actualRadix[count], remainRadix[count]);

}


void FFT::factorize(void)
{
	int i,j,k,ll;
    int factors[maxFactorCount];
	
	ll=length;

    if (ll==1)
    {
        j=1;
        factors[1]=1;
    }
    else j=0;
    i=radixLen;
    while ((ll>1) && (i>0))
    {
		if ((ll % radices[i]) == 0)
		{
			ll=ll / 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 (ll>1)
    {
        for (k=2; k<sqrt(ll)+1; k++)
            while ((ll % k) == 0)
            {
                ll= ll / k;
                j=j+1;
                factors[j]=k;
            }
			if (ll>1)
			{
				j=j+1;
				factors[j]=ll;
			}
    }               
    for (i=1; i<=j; i++)         
    {
		fact[i] = factors[j-i+1];
    }
    factLen=j;
}



void FFT::transTableSetup(int sofar[], int actual[], int remain[])
{
	int i;
	

    if (fact[1] > maxPrimeFactor)
    {
        cout<<"\nPrime factor of FFT length is overrun : "<< fact[1]
			<<"\nPlease modify the value of maxPrimeFactor in StdAfx.h"<<endl;
        exit(1);
    }

	for( i = 1 ; i <= factLen ; i++ )
		actual[i] = fact[i];

    remain[0]=length;
    sofar[1]=1;
    remain[1]=length / actual[1];
    for (i=2; i<=factLen; i++)
    {
        sofar[i]=sofar[i-1]*actual[i-1];
        remain[i]=remain[i-1] / actual[i];
    }
}

void FFT::permute(int remain[])
{
	int i,j,k;
    int count[maxFactorCount]; 
	
    for (i=1; i<=factLen; i++) 
		count[i]=0;
    k=0;
    for (i=0; i<=length-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[length-1]=xRe[length-1];
    yIm[length-1]=xIm[length-1];
}

void FFT::twiddleTransf(int sofarRadix, int radix, int remainRadix)
{
	double  cosw, sinw, gem;
    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;


    initTrig(radix);
    omega = 2*pi/(double)(sofarRadix*radix);
    cosw =  cos(omega);
    sinw = -sin(omega);
    tw_re = 1.0;
    tw_im = 0;
    dataOffset=0;
    groupOffset=dataOffset;
    adr=groupOffset;
    for (dataNo=0; dataNo<sofarRadix; dataNo++)
    {
        if (sofarRadix>1)
        {
            twiddleRe[0] = 1.0; 
            twiddleIm[0] = 0.0;
            twiddleRe[1] = tw_re;
            twiddleIm[1] = tw_im;
            for (twNo=2; twNo<radix; twNo++)
            {
                twiddleRe[twNo]=tw_re*twiddleRe[twNo-1]
                               - tw_im*twiddleIm[twNo-1];
                twiddleIm[twNo]=tw_im*twiddleRe[twNo-1]
                               + tw_re*twiddleIm[twNo-1];
            }
            gem   = cosw*tw_re - sinw*tw_im;
            tw_im = sinw*tw_re + cosw*tw_im;
            tw_re = gem;                      
        }
        for (groupNo=0; groupNo<remainRadix; groupNo++)
        {
            if ((sofarRadix>1) && (dataNo > 0))
            {
                zRe[0]=yRe[adr];
                zIm[0]=yIm[adr];
                blockNo=1;
                do {
                    adr = adr + sofarRadix;
                    zRe[blockNo]=  twiddleRe[blockNo] * yRe[adr]
                                 - twiddleIm[blockNo] * yIm[adr];
                    zIm[blockNo]=  twiddleRe[blockNo] * yIm[adr]
                                 + twiddleIm[blockNo] * yRe[adr]; 
                    
                    blockNo++;
                } while (blockNo < radix);
            }
            else
                for (blockNo=0; blockNo<radix; blockNo++)
                {
                   zRe[blockNo]=yRe[adr];
                   zIm[blockNo]=yIm[adr];
                   adr=adr+sofarRadix;
                }
            switch(radix) {
              case  2  : gem=zRe[0] + zRe[1];
                         zRe[1]=zRe[0] -  zRe[1]; zRe[0]=gem;
                         gem=zIm[0] + zIm[1];
                         zIm[1]=zIm[0] - zIm[1]; zIm[0]=gem;
                         break;
              case  3  : t1_re=zRe[1] + zRe[2]; t1_im=zIm[1] + zIm[2];
                         zRe[0]=zRe[0] + t1_re; zIm[0]=zIm[0] + t1_im;
                         m1_re=c3_1*t1_re; m1_im=c3_1*t1_im;
                         m2_re=c3_2*(zIm[1] - zIm[2]); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
风间由美中文字幕在线看视频国产欧美| 偷拍日韩校园综合在线| 精品久久人人做人人爱| 91精品国产品国语在线不卡| 欧美日韩综合在线| 欧美日韩国产大片| 7777女厕盗摄久久久| 91精品蜜臀在线一区尤物| 666欧美在线视频| 欧美一级精品在线| 久久综合九色综合久久久精品综合| 欧美一卡在线观看| 久久色视频免费观看| 国产女同互慰高潮91漫画| 中文字幕av一区二区三区| 一区免费观看视频| 五月综合激情网| 韩国精品在线观看| 成人免费精品视频| 欧美羞羞免费网站| 精品国产一区二区三区四区四| 精品国产乱码久久久久久免费| 欧美国产精品久久| 亚洲一区二区三区国产| 久久91精品久久久久久秒播 | 91色porny在线视频| 91在线播放网址| 制服丝袜亚洲精品中文字幕| 精品国产髙清在线看国产毛片| 中文字幕欧美激情一区| 亚洲在线视频一区| 韩国v欧美v亚洲v日本v| 色94色欧美sute亚洲线路二| 欧美一区2区视频在线观看| 国产人伦精品一区二区| 日韩在线观看一区二区| 高清国产一区二区| 制服丝袜日韩国产| 亚洲女人****多毛耸耸8| 美腿丝袜亚洲色图| 在线观看免费成人| 国产日韩欧美高清| 美国三级日本三级久久99| 99re视频精品| 久久久久久久综合色一本| 亚洲电影你懂得| 成人精品亚洲人成在线| 日韩三级中文字幕| 一区二区三区小说| 成a人片国产精品| 日韩久久久精品| 亚洲国产sm捆绑调教视频| 波多野结衣中文字幕一区| 精品久久久久久久久久久院品网| 一区二区在线观看视频在线观看| 国产成人在线影院| 欧美精品一区二区三区在线播放 | 成人免费的视频| 日韩欧美一区在线| 午夜精品久久久久久久久久| 色综合亚洲欧洲| 一区二区中文视频| 波波电影院一区二区三区| 久久毛片高清国产| 国产乱对白刺激视频不卡| 精品精品国产高清a毛片牛牛 | 精品日韩在线一区| 免费看日韩a级影片| 91精品久久久久久久久99蜜臂| 亚洲激情校园春色| 色悠悠久久综合| 亚洲精品你懂的| 欧美私模裸体表演在线观看| 亚洲精品菠萝久久久久久久| 91香蕉视频污| 亚洲一二三四在线| 欧美三级在线看| 亚洲成人资源在线| 欧美一区二区三级| 精品一区二区三区视频在线观看 | 中文字幕中文字幕一区二区| 国产91丝袜在线播放| 国产精品色一区二区三区| 成人精品视频一区二区三区尤物| 国产欧美一区二区精品仙草咪 | 亚洲精品美腿丝袜| 欧美日韩国产高清一区二区三区| 丝袜亚洲另类欧美| 日韩三区在线观看| 成人丝袜18视频在线观看| 国产精品传媒入口麻豆| 欧美亚洲尤物久久| 日韩av高清在线观看| 亚洲精品在线三区| av在线播放一区二区三区| 亚洲精品国产品国语在线app| 欧美丝袜丝交足nylons图片| 美女在线观看视频一区二区| 久久精品夜夜夜夜久久| 色婷婷综合激情| 麻豆精品一区二区综合av| 中文字幕高清不卡| 欧美久久久久久蜜桃| 国产一区二区三区免费在线观看| 中文字幕一区二区三中文字幕| 欧美日韩高清一区二区不卡| 精品一区二区三区免费| 成人欧美一区二区三区1314| 欧美日韩国产精选| 成人三级伦理片| 日韩黄色片在线观看| 中文字幕一区二区三区四区| 欧美喷水一区二区| a级高清视频欧美日韩| 男人操女人的视频在线观看欧美 | 在线免费观看成人短视频| 久久电影网电视剧免费观看| 国产精品久久久久婷婷| 69堂成人精品免费视频| www.日韩精品| 青青草成人在线观看| 亚洲精品美国一| 亚洲国产精品成人综合色在线婷婷| 欧美日韩一区二区三区四区| 国产成人一区二区精品非洲| 亚洲午夜免费视频| 国产精品久久久久久户外露出| 欧美变态tickle挠乳网站| 欧美自拍偷拍一区| av成人免费在线观看| 精品午夜久久福利影院| 午夜不卡在线视频| 亚洲综合区在线| 国产精品免费人成网站| 久久久久久一二三区| 日韩精品一区二区三区视频播放| 欧美亚洲免费在线一区| 成人av网在线| 国内精品写真在线观看| 日韩国产一区二| 亚洲成人精品一区二区| 亚洲国产精品久久久男人的天堂| 国产精品蜜臀av| 国产精品区一区二区三| 欧美激情一区二区三区不卡| 欧美精品一区二区三| 日韩午夜激情电影| 欧美一区二区三区在线观看视频| 欧美伊人久久大香线蕉综合69| 91老师片黄在线观看| 99久久99久久久精品齐齐| 成人午夜激情影院| 99久久免费精品| 一本一道波多野结衣一区二区| 不卡区在线中文字幕| 99久久久无码国产精品| 一本色道**综合亚洲精品蜜桃冫| 91在线精品一区二区| 欧美午夜影院一区| 717成人午夜免费福利电影| 日韩一区二区三区在线视频| 日韩片之四级片| 26uuu精品一区二区三区四区在线| 欧美大胆一级视频| 中文字幕二三区不卡| 亚洲精品日韩专区silk| 日韩精品视频网站| 毛片av一区二区三区| 国产精品77777| 91蜜桃免费观看视频| 欧美日韩免费视频| 精品国产一区二区亚洲人成毛片| 26uuu精品一区二区三区四区在线| 久久精品欧美一区二区三区麻豆| 国产精品人人做人人爽人人添| 亚洲精品水蜜桃| 麻豆国产一区二区| 99v久久综合狠狠综合久久| 欧美日韩一区二区三区在线| 日韩色视频在线观看| 国产精品久久网站| 日韩精品欧美精品| 成人av免费在线| 日韩亚洲欧美成人一区| 国产精品入口麻豆九色| 日本三级亚洲精品| 成人性视频网站| 欧美剧在线免费观看网站 | 91成人免费在线| 久久亚洲春色中文字幕久久久| 亚洲欧美在线另类| 免费精品99久久国产综合精品| 成人美女在线观看| 欧美精品少妇一区二区三区| 国产视频不卡一区| 五月天激情综合| 色综合天天在线| 国产日韩欧美在线一区| 免费在线观看视频一区| 色www精品视频在线观看|