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

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

?? wib_fft_f.c

?? 802.16e物理層FFT算法的實現。嚴格按照802.16e實現。
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
//#include <time.h>
#include "fft_f.h"


/*
 * *************************************************************************************
 * function name: fft_f_prepare
 * parameters: N:          fft_size;
			   bit_width:  fft bit width
 * return: fft_tbl
 * description: Prepare FFT Table  
 * -------------------------------------------------------------------------------------
 */

fft_tbl fft_f_prepare(
                 unsigned short N,                  //fft size
                 unsigned char bit_width            //WP bit width
                 ) 
{
    unsigned short i,j,k,t;
    unsigned char log2n;
    unsigned char degree;
    unsigned short temp_j,temp_k;
    unsigned short temp;
    const unsigned char addr_constant[2] = {0,2};
    unsigned short COEF_W = bit_width-1;
    const double PI = 3.1415926;
    unsigned short nk;
/*
    unsigned short *p_reorder_idx;        //first stage reorder index
    complex16 *p_w1p;                     //WP gene
    complex16 *p_w2p;
    complex16 *p_w3p;
    */
    fft_tbl fft_tbl_inst;

    fft_tbl_inst.N = N;
    fft_tbl_inst.bit_width = bit_width;
    log2n = (unsigned char)(log(N)/log(2));
    degree = (unsigned char)(log2n >> 1);
    fft_tbl_inst.log2n = log2n;
    fft_tbl_inst.degree = degree;
   
    //malloc memory for p_reorder_idx
    fft_tbl_inst.p_reorder_idx = (unsigned short *)malloc(N * sizeof(unsigned short));
    if(fft_tbl_inst.p_reorder_idx == NULL) {
        printf("Cann't allocate memory ,terminating...");
        exit (1);
    }

    
    //malloc memory for WP gene
    k = 0;
    for (i = 0; i < degree; i++) {
        k = (unsigned short)(k+POW4I_1);
    }
    
    fft_tbl_inst.p_w1p = (complex16 *)malloc(k * sizeof(complex16));
    if(fft_tbl_inst.p_w1p == NULL) {
        printf("Cann't allocate memory ,terminating...");
        exit (1);
    }

    fft_tbl_inst.p_w2p = (complex16 *)malloc(k * sizeof(complex16));
    if(fft_tbl_inst.p_w2p == NULL) {
        printf("Cann't allocate memory ,terminating...");
        exit (1);
    }

    fft_tbl_inst.p_w3p = (complex16 *)malloc(k * sizeof(complex16));
    if(fft_tbl_inst.p_w3p == NULL) {
        printf("Cann't allocate memory ,terminating...");
        exit (1);
    }

    //Calculate reordered index
    for (i = 0; i < N; i++) {
        temp = 0;
        for (j = 0; j < degree; j++) {
            k = (unsigned short)(log2n + addr_constant[j % 2] - j -2);
            temp_k = (unsigned short)(((i & (1 << j)) >> j) << k);
            temp_j = (unsigned short)(((i & (1 << k)) >> k) << j);
            temp = (unsigned short)(temp + temp_k +temp_j);
        }
        *(fft_tbl_inst.p_reorder_idx+i) = temp;  
    }


    //calculate WP gene

     k = 0;
    for (i = 0; i < degree; i++) {
        t = (unsigned short)(1 << (i * 2));
        j = 0;
        do {                                      //for q=1:4^(degree-1)
            nk = (unsigned short)((j << log2n) >> ((i+1)*2));       // nk=(q-1)*N/(4^degree);
            fft_tbl_inst.p_w1p[k].r = (signed short)floor(cos(-2 * PI * nk / N) * (1 << COEF_W));
            fft_tbl_inst.p_w1p[k].i = (signed short)floor(sin(-2 * PI * nk / N) * (1 << COEF_W));
            k++;
        } while (++j < t);
    }
	
	k = 0;
    for (i = 0; i < degree; i++) {
        t = (unsigned short)(1 << (i * 2));
        j = 0;
        do {                                      //for q=1:4^(degree-1)
            nk = (unsigned short)(2 * (j << log2n) >> ((i+1)*2));       // nk=(q-1)*N/(4^degree);
            fft_tbl_inst.p_w2p[k].r = (signed short)floor(cos(-2 * PI * nk / N) * (1 << COEF_W));
            fft_tbl_inst.p_w2p[k].i = (signed short)floor(sin(-2 * PI * nk / N) * (1 << COEF_W));
            k++;
        } while (++j < t);
    }

    k = 0;
    for (i = 0; i < degree; i++) {
        t = (unsigned short)(1 << (i * 2));
        j = 0;
        do {                                      //for q=1:4^(degree-1)
            nk = (unsigned short)(3 * (j << log2n) >> ((i+1)*2));       // nk=(q-1)*N/(4^degree);
            fft_tbl_inst.p_w3p[k].r = (signed short)floor(cos(-2 * PI * nk / N) * (1 << COEF_W));
            fft_tbl_inst.p_w3p[k].i = (signed short)floor(sin(-2 * PI * nk / N) * (1 << COEF_W));
            k++;
        } while (++j < t);
    }

	fft_tbl_inst.p_w1p[0].r = fft_tbl_inst.p_w1p[0].r -1;
	fft_tbl_inst.p_w1p[1].r = fft_tbl_inst.p_w1p[1].r -1;
	fft_tbl_inst.p_w1p[5].r = fft_tbl_inst.p_w1p[5].r -1;
	fft_tbl_inst.p_w1p[21].r = fft_tbl_inst.p_w1p[21].r -1;
    
	fft_tbl_inst.p_w2p[0].r = fft_tbl_inst.p_w2p[0].r -1;
	fft_tbl_inst.p_w2p[1].r = fft_tbl_inst.p_w2p[1].r -1;
	fft_tbl_inst.p_w2p[5].r = fft_tbl_inst.p_w2p[5].r -1;
	fft_tbl_inst.p_w2p[21].r = fft_tbl_inst.p_w2p[21].r -1;
    
	fft_tbl_inst.p_w3p[0].r = fft_tbl_inst.p_w3p[0].r -1;
	fft_tbl_inst.p_w3p[1].r = fft_tbl_inst.p_w3p[1].r -1;
	fft_tbl_inst.p_w3p[5].r = fft_tbl_inst.p_w3p[5].r -1;
	fft_tbl_inst.p_w3p[21].r = fft_tbl_inst.p_w3p[21].r -1;
    

    return fft_tbl_inst;
}


/*
 * *************************************************************************************
 * function name: fft_f_free
 * parameters: fft_tbl_inst:   FFT table;
 * return: void
 * description:  Free FFT Table  
 * -------------------------------------------------------------------------------------
 */
void fft_f_free(
                fft_tbl fft_tbl_inst
                )
{
    free(fft_tbl_inst.p_reorder_idx);
    free(fft_tbl_inst.p_w1p);
    free(fft_tbl_inst.p_w2p);
    free(fft_tbl_inst.p_w3p);
}

/*
 * *************************************************************************************
 * function name: mult_comp
 * parameters: x1:     complex number1;
               x2:     complex number2;
               COEF_W: right shift bits of complex mult
 * return: complex mult result
 * description:  complex mult  
 * -------------------------------------------------------------------------------------
 */

complex16 mult_comp(
                    complex16 x1,
                    complex16 x2,
                    unsigned char COEF_W
                    )
{
    complex16 y;

    y.r = (signed short)(((x1.r * x2.r) >> COEF_W) - ((x1.i * x2.i) >> COEF_W));
    y.i = (signed short)(((x1.r * x2.i) >> COEF_W) + ((x1.i * x2.r) >> COEF_W));

    return y;
}



/*
 * *************************************************************************************
 * function name: dft4p
 * parameters: x1,x2,x3,x4:         input for compex data
               w1p,w2p,w3p:         w gene of FFT
               p_y1,p_y2,p_y3,p_y4: address to store result data
 * return: void
 * description:  base4 fft butterfly  
 * -------------------------------------------------------------------------------------
 */

void dft4p(
           complex16 x1,complex16 x2,complex16 x3,complex16 x4,
           complex16 w1p,complex16 w2p,complex16 w3p,
           unsigned char COEF_W,
           complex16 *p_y1,complex16 *p_y2,complex16 *p_y3,complex16 *p_y4
           )
{
    complex16 cw2p,bw1p,dw3p;

    cw2p = mult_comp(x3,w2p,COEF_W);
    bw1p = mult_comp(x2,w1p,COEF_W);
    dw3p = mult_comp(x4,w3p,COEF_W);


    p_y1->r = (signed short)(x1.r + bw1p.r + cw2p.r + dw3p.r);
    p_y1->i = (signed short)(x1.i + bw1p.i + cw2p.i + dw3p.i);

    p_y2->r = (signed short)(x1.r + bw1p.i - cw2p.r - dw3p.i);
    p_y2->i = (signed short)(x1.i - bw1p.r - cw2p.i + dw3p.r);

    p_y3->r = (signed short)(x1.r - bw1p.r + cw2p.r - dw3p.r);
    p_y3->i = (signed short)(x1.i - bw1p.i + cw2p.i - dw3p.i);

    p_y4->r = (signed short)(x1.r - bw1p.i - cw2p.r + dw3p.i);
    p_y4->i = (signed short)(x1.i + bw1p.r - cw2p.i - dw3p.r);

/*
y1 = x1 + bw1p + cw2p + dw3p;
y2 = x1 - j*bw1p - cw2p + j*dw3p;
y3 = x1 - bw1p + cw2p - dw3p;
y4 = x1 + j*bw1p - cw2p - j*dw3p;
*/
}




/*
 * *************************************************************************************
 * function name: fft_f_execute
 * parameters: p_dat_in : point to input buffer
               p_dat_out: point to output buffer
               mode     : 0 fft; 1 IFFT
               fft_tbl  : FFT table;generate from function fft_f_prepare 
 * return exponent.The rusult is (*p_dat_out)*(2^exponent);
 * description: 256 point fft/ifft 
 * -------------------------------------------------------------------------------------
 */

signed short fft_f_execute(
            const complex16 *p_dat_in,       //point to input buffer;
            complex16 *p_dat_out,            //point to output buffer;
            const unsigned char mode,        //0 fft; 1 IFFT

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产另类av| 亚洲高清免费在线| 精品999久久久| 欧美一区二区三区在线看| 欧美日韩一区二区三区不卡| 99re这里都是精品| 91视频com| 欧美性大战久久| 在线成人免费观看| 日韩一区二区在线免费观看| 日韩欧美资源站| 亚洲精品一区在线观看| 久久精品亚洲乱码伦伦中文| 国产欧美一区二区精品性色| 亚洲欧洲精品天堂一级| 一级特黄大欧美久久久| 亚洲一区二三区| 日韩一区精品视频| 久久99精品视频| 成人av动漫网站| 欧美日韩1234| 久久―日本道色综合久久| 国产欧美一区二区精品久导航| 中文字幕日韩一区| 日韩综合一区二区| 国产一区不卡在线| 91在线丨porny丨国产| 欧美日韩亚洲综合一区 | 国产欧美日韩另类视频免费观看| 欧美精品一区二区不卡| 国产农村妇女毛片精品久久麻豆| 亚洲精品水蜜桃| 理论片日本一区| 91麻豆视频网站| 精品国精品国产| 一区二区三区在线免费观看| 日本成人超碰在线观看| 成人毛片老司机大片| 欧美日本在线看| 亚洲色大成网站www久久九九| 亚洲成av人片观看| 国产suv精品一区二区883| 欧美视频一二三区| 中文字幕免费一区| 丝袜国产日韩另类美女| 波多野结衣中文字幕一区| 日韩一区二区三区免费看| 欧美激情在线一区二区| 日本伊人色综合网| 色婷婷综合久久久久中文| 久久色中文字幕| 日精品一区二区三区| 色琪琪一区二区三区亚洲区| 2020国产精品自拍| 日本亚洲一区二区| 一道本成人在线| 欧美激情一二三区| 国产一本一道久久香蕉| 欧美一区二区在线免费观看| 亚洲女同一区二区| 99久久婷婷国产综合精品| xf在线a精品一区二区视频网站| 图片区小说区区亚洲影院| 在线视频国内自拍亚洲视频| 国产精品理论在线观看| 国产a级毛片一区| 久久久久久久久蜜桃| 国产在线看一区| 亚洲精品一区二区三区99| 香蕉成人啪国产精品视频综合网| 日本精品视频一区二区| 日韩理论片网站| 92国产精品观看| 亚洲色图欧美偷拍| 91在线免费播放| 亚洲麻豆国产自偷在线| 日本电影欧美片| 一级女性全黄久久生活片免费| 91久久一区二区| 一区二区三区精品在线| 欧美性三三影院| 日本女优在线视频一区二区| 欧美一级欧美三级在线观看 | 2020日本不卡一区二区视频| 精品一区二区三区久久| 国产欧美精品一区aⅴ影院| 成人午夜电影网站| 一区二区在线看| 91精品国产黑色紧身裤美女| 蜜桃一区二区三区在线观看| 精品欧美一区二区三区精品久久 | 国产日韩欧美精品在线| 97超碰欧美中文字幕| 婷婷开心激情综合| 欧美成人女星排名| 成人性色生活片| 一区二区三区高清不卡| 日韩视频一区二区三区| 成人免费观看男女羞羞视频| 一区二区三区欧美在线观看| 欧美一级久久久| 国产传媒日韩欧美成人| 一区二区在线观看视频在线观看| 8x8x8国产精品| 成人免费高清视频在线观看| 一区二区三区四区中文字幕| 日韩欧美资源站| 色婷婷综合久久久中文一区二区 | 亚洲午夜精品网| 日韩美女视频一区二区在线观看| 懂色av一区二区三区蜜臀| 一区2区3区在线看| 久久久久成人黄色影片| 在线免费观看一区| 国产精品一区在线观看乱码| 夜夜亚洲天天久久| 国产女人18水真多18精品一级做| 欧美三级电影网站| 成人综合日日夜夜| 麻豆国产精品一区二区三区| 亚洲免费在线看| 国产午夜精品在线观看| 欧美妇女性影城| 91日韩在线专区| 国产麻豆精品一区二区| 亚洲成人免费观看| ㊣最新国产の精品bt伙计久久| 欧美一区二区三区公司| 色悠悠亚洲一区二区| 高清免费成人av| 极品少妇一区二区| 婷婷六月综合亚洲| 亚洲宅男天堂在线观看无病毒| 久久久久国色av免费看影院| 91精品福利在线一区二区三区 | 国产精品盗摄一区二区三区| 欧美第一区第二区| 欧美三级日本三级少妇99| 色妹子一区二区| 成人深夜福利app| 成人一二三区视频| 高清成人免费视频| 国产盗摄女厕一区二区三区| 国产真实乱对白精彩久久| 亚洲精品成人精品456| 亚洲品质自拍视频网站| 欧美电影免费观看高清完整版在线观看| 99久久伊人精品| av电影在线观看不卡| 国产福利不卡视频| 国产成人免费网站| 国产老肥熟一区二区三区| 免费在线观看成人| 国产综合久久久久影院| 九九视频精品免费| 另类小说欧美激情| 国产在线国偷精品免费看| 国产资源精品在线观看| 国产酒店精品激情| av在线免费不卡| 色成人在线视频| 欧美精选午夜久久久乱码6080| 欧美日韩国产美| 日韩午夜激情视频| 欧美精品一区二区三区在线| 精品三级av在线| 亚洲国产精品二十页| ㊣最新国产の精品bt伙计久久| 亚洲综合色在线| 日本欧美在线观看| 久久精品国产亚洲一区二区三区| 国产在线视频一区二区三区| 成人av网站大全| 欧美麻豆精品久久久久久| 精品免费视频.| 亚洲欧美日韩精品久久久久| 亚洲电影欧美电影有声小说| 久久电影网站中文字幕| 成人激情电影免费在线观看| 91麻豆免费观看| 精品少妇一区二区三区在线播放 | 国产精品一区二区男女羞羞无遮挡| 国产原创一区二区| 91视频.com| 日韩精品一区二区三区swag| 国产精品短视频| 日韩中文字幕一区二区三区| 国产91丝袜在线观看| 欧美日韩综合不卡| 日本一区二区久久| 午夜伊人狠狠久久| 国产精品亚洲午夜一区二区三区 | 亚洲男人天堂av网| 精品一区二区综合| 色综合一个色综合亚洲| 欧美videos中文字幕| 亚洲视频一区二区免费在线观看| 免费观看在线色综合| 色综合久久九月婷婷色综合| 久久久99精品免费观看不卡|