91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-10
  • 語(yǔ)言: 其他
  • 標(biāo)簽: FFT??

資源簡(jiǎn)介

快速傅里葉變換算法,支持2的n次方點(diǎn)變換,并支持求相位操作。

資源截圖

代碼片段和文件信息

#include“fft.h“
#include
#include“l(fā)m9033.h“

?

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

?????????????????????????快速福利葉變換C程序包

函數(shù)簡(jiǎn)介:此程序包是通用的快速傅里葉變換C語(yǔ)言函數(shù),移植性強(qiáng),以下部分不依

??????????賴硬件。此程序包采用聯(lián)合體的形式表示一個(gè)復(fù)數(shù),輸入為自然順序的復(fù)

??????????數(shù)(輸入實(shí)數(shù)是可令復(fù)數(shù)虛部為0),輸出為經(jīng)過(guò)FFT變換的自然順序的

??????????復(fù)數(shù).此程序包可在初始化時(shí)調(diào)用create_sin_tab()函數(shù)創(chuàng)建正弦函數(shù)表,

??????????以后的可采用查表法計(jì)算耗時(shí)較多的sin和cos運(yùn)算,加快可計(jì)算速度.與

??????????Ver1.1版相比較,Ver1.2版在創(chuàng)建正弦表時(shí)只建立了1/4個(gè)正弦波的采樣值,

??????????相比之下節(jié)省了FFT_N/4個(gè)存儲(chǔ)空間

使用說(shuō)明:使用此函數(shù)只需更改宏定義FFT_N的值即可實(shí)現(xiàn)點(diǎn)數(shù)的改變,F(xiàn)FT_N的

??????????應(yīng)該為2的N次方,不滿足此條件時(shí)應(yīng)在后面補(bǔ)0。若使用查表法計(jì)算sin值和

??????????cos值,應(yīng)在調(diào)用FFT函數(shù)前調(diào)用create_sin_tab()函數(shù)創(chuàng)建正弦表

函數(shù)調(diào)用:FFT(s);
**********************************************************************/
?
unsigned?int?angle;

float??SIN_TAB[FFT_N/4+1];???????????????????????????????????????????//定義正弦表的存放空間
?
struct?compx?s[FFT_N];??????????????????????????????????????????????//FFT輸入和輸出:從S[0]開(kāi)始存放,根據(jù)大小自己定義
?

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

函數(shù)原型:struct?compx?EE(struct?compx?b1struct?compx?b2)?

函數(shù)功能:對(duì)兩個(gè)復(fù)數(shù)進(jìn)行乘法運(yùn)算

輸入?yún)?shù):兩個(gè)以聯(lián)合體定義的復(fù)數(shù)ab

輸出參數(shù):a和b的乘積,以聯(lián)合體的形式輸出

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

struct?compx?EE(struct?compx?astruct?compx?b)?????

{

?struct?compx?c;

?c.real=a.real*b.real-a.imag*b.imag;

?c.imag=a.real*b.imag+a.imag*b.real;

?return(c);

}

?

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

函數(shù)原型:void?create_sin_tab(float?*sin_t)

函數(shù)功能:創(chuàng)建一個(gè)正弦采樣表,采樣點(diǎn)數(shù)與福利葉變換點(diǎn)數(shù)相同

輸入?yún)?shù):*sin_t存放正弦表的數(shù)組指針

輸出參數(shù):無(wú)

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

void?create_sin_tab(float?*sin_t)????????????????????

{

??int?i;

??for(i=0;i<=FFT_N/4;i++)

??sin_t[i]=sin(2*PI*i/FFT_N);

}

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

函數(shù)原型:void?sin_tab(float?pi)

函數(shù)功能:采用查表的方法計(jì)算一個(gè)數(shù)的正弦值

輸入?yún)?shù):pi?所要計(jì)算正弦值弧度值,范圍0--2*PI,不滿足時(shí)需要轉(zhuǎn)換

輸出參數(shù):輸入值pi的正弦值

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

float?sin_tab(float?pi)

{

??int?n;

??float?a;

???n=(int)(pi*FFT_N/2/PI);

??

??if(n>=0&&n<=FFT_N/4)

????a=SIN_TAB[n];

??else?if(n>FFT_N/4&&n
????{

?????n-=FFT_N/4;

?????a=SIN_TAB[FFT_N/4-n];

????}

??else?if(n>=FFT_N/2&&n<3*FFT_N/4)

????{

?????n-=FFT_N/2;

?????a=-SIN_TAB[n];

???}

??else?if(n>=3*FFT_N/4&&n<3*FFT_N)

????{

?????n=FFT_N-n;

?????a=-SIN_TAB[n];

???}

?

??return?a;

}

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

函數(shù)原型:void?cos_tab(float?pi)

函數(shù)功能:采用查表的方法計(jì)算一個(gè)數(shù)的余弦值

輸入?yún)?shù):pi?所要計(jì)算余弦值弧度值,范圍0--2*PI,不滿足時(shí)需要轉(zhuǎn)換

輸出參數(shù):輸入值pi的余弦值

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

float?cos_tab(float?pi)

{

???float?api2;

???pi2=pi+PI/2;

???if(pi2>2*PI)

?????pi2-=2*PI;

???a=sin_tab(pi2);

???return?a;

}

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


評(píng)論

共有 條評(píng)論