久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
C語言寫的FFT代碼
[打印本頁]
作者:
略知一二
時間:
2021-12-26 17:19
標題:
C語言寫的FFT代碼
/* 新手上路還望見諒。 *
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 8 //64 輸入樣本總數
#define M 3 //DFT運算層數 //2^m=N
#define PI 3.1415926
float twiddle[N/2] = {1.0, 0.707, 0.0, -0.707};
float x_r[N] = {1, 1, 1, 1, 0, 0, 0, 0}; //輸入數據,此處設為8個
float x_i[N]; //N=8
/**
* 初始化輸出虛部
*/
static void fft_init( void )
{
int i;
for(i=0; i<N; i++) x_i[i] = 0.0;
}
/**
* 反轉算法.將時域信號重新排序.
* 這個算法有改進的空間
*/
static void bitrev( void )
{
int p=1, q, i;
int bit_rev[ N ];
float xx_r[ N ];
bit_rev[ 0 ] = 0;
while( p < N )
{
for(q=0; q<p; q++)
{
bit_rev[ q ] = bit_rev[ q ] * 2;
bit_rev[ q + p ] = bit_rev[ q ] + 1;
}
p *= 2;
}
for(i=0; i<N; i++) xx_r[ i ] = x_r[ i ];
for(i=0; i<N; i++) x_r[i] = xx_r[ bit_rev[i] ];
}
void fft( void )
{ fp = fopen("log2.txt", "a+");//此處
int cur_layer, gr_num, i, k, p; //cur_layer代表正要計算的當前層,gr_num代表當前層的顆粒數
float tmp_real, tmp_imag, temp; // 臨時變量, 記錄實部
float tw1, tw2;// 旋轉因子,tw1為旋轉因子的實部cos部分, tw2為旋轉因子的虛部sin部分.
int step; // 步進
int sample_num; // 顆粒的樣本總數(各層不同, 因為各層顆粒的輸入不同)
/* 對層循環 */
for(cur_layer=1; cur_layer<=M; cur_layer++)
{
/* 求當前層擁有多少個顆粒(gr_num) */
gr_num = 1;
i = M - cur_layer;
while(i > 0)
{
i--;
gr_num *= 2;
}
/* 每個顆粒的輸入樣本數N' */
sample_num = (int)pow(2, cur_layer);
/* 步進. 步進是N'/2 */
step = sample_num/2;
/* */
k = 0;
/* 對顆粒進行循環 */
for(i=0; i<gr_num; i++)
{
/*
* 對樣本點進行循環, 注意上限和步進
*/
for(p=0; p<sample_num/2; p++)
{
// 旋轉因子, 需要優化...
tw1 = cos(2*PI*p/pow(2, cur_layer));
tw2 = -sin(2*PI*p/pow(2, cur_layer));
tmp_real = x_r[k+p];
tmp_imag = x_i[k+p];
temp = x_r[k+p+step];
/* 蝶形算法 */
x_r[k+p] = tmp_real + ( tw1*x_r[k+p+step] - tw2*x_i[k+p+step] );
x_i[k+p] = tmp_imag + ( tw2*x_r[k+p+step] + tw1*x_i[k+p+step] );
/* X[k] = A(k)+WB(k)
* X[k+N/2] = A(k)-WB(k) 的性質可以優化這里*/
/*旋轉因子, 需要優化...
tw1 = cos(2*PI*(p+step)/pow(2, cur_layer));
tw2 = -sin(2*PI*(p+step)/pow(2, cur_layer));
x_r[k+p+step] = tmp_real + ( tw1*temp - tw2*x_i[k+p+step] );
x_i[k+p+step] = tmp_imag + ( tw2*temp + tw1*x_i[k+p+step] );*/
x_r[k+p+step] = tmp_real - ( tw1* temp - tw2*x_i[k+p+step] );
x_i[k+p+step] = tmp_imag - ( tw2* temp + tw1*x_i[k+p+step] );
printf("k=%d, x_r[k]=%f, x_i[k]=%f\n", k+p, x_r[k+p], x_i[k+p]);
printf("k=%d, x_r[k]=%f, x_i[k]=%f\n", k+p+step, x_r[k+p+step], x_i[k+p+step]);
}
/* 開跳!:) */
k += 2*step;
}
}
}
void display( void )
{
printf("\n\n");
int i;
for(i=0; i<N; i++)
printf("%f\t%f\n", x_r[i], x_i[i]);
}
int main( void )
{
fft_init( ); //初始化
bitrev( ); //將輸入直接按FFT計算要求排序,如8點FFT計算,排序為x[0]、x[4]、x[2]、x[6]、x[1]、x[5]、x[3]、x[7]
fft( ); //進行FFT計算
display( ); //顯示計算結果
system( "pause" );
return 1;
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩电影一区二区三区
|
夜夜久久
|
久久精品91久久久久久再现
|
中文字幕 在线观看
|
精品国产一区二区三区日日嗨
|
天天综合久久
|
动漫www.被爆羞羞av44
|
91精品国产麻豆
|
亚洲免费在线
|
九九热热九九
|
日韩精品亚洲专区在线观看
|
精品香蕉一区二区三区
|
成年人精品视频在线观看
|
一区观看
|
日韩视频一区二区三区
|
日日草夜夜草
|
亚洲午夜精品一区二区三区他趣
|
欧美一区二区三区视频
|
高清黄色网址
|
97av视频在线
|
成年人国产在线观看
|
亚洲高清一区二区三区
|
最新国产福利在线
|
精品国产精品国产偷麻豆
|
日本中文在线视频
|
日本一本视频
|
日韩久久久久久
|
午夜日韩
|
成人毛片视频免费
|
韩国av一区二区
|
久久99精品久久久久
|
日韩欧美一级片
|
精品中文字幕一区二区
|
亚洲一区成人
|
激情三区
|
日韩精品免费
|
99久久婷婷国产综合精品首页
|
天堂一区二区三区
|
亚洲欧美激情国产综合久久久
|
69av片
|
国产一区三区在线
|