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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? chdecoding.c

?? matlab實(shí)現(xiàn)wcdma的全過(guò)程
?? C
字號(hào):
/* | | Copyright disclaimer: |   This software was developed at the National Institute of Standards |   and Technology by employees of the Federal Government in the course |   of their official duties. Pursuant to title 17 Section 105 of the |   United States Code this software is not subject to copyright |   protection and is in the public domain. | |   We would appreciate acknowledgement if the software is used. |*//* | Project:     WCDMA simulation environment | Module:      Convolutional decoder. | Author:      Tommi Makelainen, Nokia/NIST | Date:        February 12, 1999 | | History: |              February 12, 1999 Tommi Makelainen |                      Initial version. | |              June 11, 1999 Maarit Melvasalo |                      Corrected error in 'wcdma_chdecoding_free'. |                      Instance was not marked as INSTANCE_FREE. | */#include <stdio.h>#include <math.h>#include "conversions.h"#include "bitroutines.h"#include "config_wcdma.h"#include "mealy.h"#include "errormsg.h"#include "metrics.h"#include "convenc.h"#include "convdec.h"#include "interleaver.h"/* -------- D A T A   S T R U C T U R E S ---------------------------- */static enum instance_state chdec_alloc_list[MAX_CH_CODERS];static int decoder_instances = 0;static general_init_flag = FALSE;static MetricTable      *decoding_metrics[MAX_CH_CODERS];static MealyEncoder     *encoders[MAX_CH_CODERS];static ViterbiDecoder   *decoders[MAX_CH_CODERS];static int              *deintr_symbs[MAX_CH_CODERS];static int              *demod_alphas[MAX_CH_CODERS];static double           *intrl_sbits[MAX_CH_CODERS];static double *demod_metrics[MAX_CH_CODERS];/* -------------------------------------------------------------------- *//* * Function:    wcdma_chdecoding_init * Desc.:       Convolutional decoding initialization * * Returns:     => 0 allocated instance number, -1 if no free decoders. * * Note: */int wcdma_chdecoding_init(                int coder_type,         /* IN: 1=conv., 2=turbo */                int coding_ratio,       /* IN: 2 = 1/2 or 3 = 1/3 */      		int input_size,	    /* IN: Size of input bit estimate vector */                int metric_int_type, 	/* IN: 0=hard, 1=soft */                int gen_polys[], 	/* IN: generator polynomials */                double soft_prob_0[],   /* IN: probabilities for 0 value */                double soft_prob_1[],   /* IN: probabilities for 1 value */		int nSoftProbs)		/* IN: length of probability vectors */{    int TailLength = CONVOLUTION_TAIL_LEN;    int Decoding_depth = 8;    int instance, i;    MetricTable *decoding_metric;    MealyEncoder *encoder;    ViterbiDecoder *decoder;    int *deintr_symbols, *demod_conv_alphas;    double *intrl_soft_bits, *demod_soft_metrics;    int num_encode_stages;    enum metric_type_type metric_type;    if (decoder_instances < MAX_CH_CODERS) {        /*         * If first call, initialize static data.         */        if (general_init_flag == FALSE) {            for (i=0; i < MAX_CH_CODERS; i++) {                chdec_alloc_list[i] = FREE_INSTANCE;            } /* for */            general_init_flag = TRUE;        } /* if general_init_flag */        /*         * Find first free instance number.         */        instance = -1;        for (i=0; i < MAX_CH_CODERS; i++) {            if (chdec_alloc_list[i] == FREE_INSTANCE) {                instance = i;                break;            }        } /* for */        if (instance == -1) return(-1); /* no free instances */      /*       * Convert path metric variable to enumerated type.       */      metric_type = metric_int_type == 0 ? HAMMING_METRIC : SOFT_METRIC;      /*       * Allocate data structures for convolutional encoder and decoder.       */      decoding_metric = (MetricTable*)calloc(1, sizeof(MetricTable));      encoder = (MealyEncoder*)calloc(1, sizeof(MealyEncoder));      decoder = (ViterbiDecoder*)calloc(1, sizeof(ViterbiDecoder));      /*       * Calculate all possible encoder state transitions.       * Initialize decoding metrics and decoder.       */      num_encode_stages = CONVOLUTION_TAIL_LEN+1;      if (coder_type == 1) { /* convolution */          if (coding_ratio == 2) {              wcdma_R1o2_k9_conv_init (encoder, num_encode_stages,                                       gen_polys[0], gen_polys[1]);              MetricTable_R1o2_Init(decoding_metric,metric_type,                               soft_prob_0, soft_prob_1, nSoftProbs);              wcdma_dec_R1o2_k9_init( decoder, input_size,                                      Decoding_depth, TailLength,                                      encoder, decoding_metric);          } else if (coding_ratio == 3) {              wcdma_R1o3_k9_conv_init (encoder, num_encode_stages,                                       gen_polys[0], gen_polys[1],                                       gen_polys[2]);              MetricTable_R1o3_Init(decoding_metric,metric_type,                               soft_prob_0, soft_prob_1, nSoftProbs);              wcdma_dec_R1o3_k9_init( decoder, input_size,                                      Decoding_depth, TailLength,                                      encoder, decoding_metric);          }      } else if (coder_type == 2) { /* turbo */         printf("Turbo coding is not available.\n");         free(decoding_metric);         free(encoder);         free(decoder);         return(-1);       }      /*       * Allocated memory for temporary convolution decoder outputs.       */      deintr_symbols = (int*)calloc(input_size, sizeof(int));      demod_conv_alphas = (int*)calloc(input_size/coding_ratio, sizeof(int));      intrl_soft_bits  = (double*)calloc(input_size, sizeof(double));      demod_soft_metrics  = (double*)                            calloc(input_size/coding_ratio, sizeof(double));      /*       * Store data structures for this instance.       */      decoding_metrics[instance] = decoding_metric;      encoders[instance] = encoder;      decoders[instance] = decoder;      deintr_symbs[instance] = deintr_symbols;      demod_alphas[instance] = demod_conv_alphas;      intrl_sbits[instance] = intrl_soft_bits;      demod_metrics[instance] = demod_soft_metrics;      /*       * Update instance allocation list.       */      chdec_alloc_list[instance] = INSTANCE_IN_USE;      decoder_instances++;      return(instance);    } else {      return(-1);    } /* if decoder_instances */}/* -------------------------------------------------------------------- *//* * Function:    wcdma_chdecoding_dec * Desc.:       Convolutional decoding block * * Note: *              Tail vector is 8 bits long. */int wcdma_chdecoding_dec(int coder_type,      /* 1=conv., 2=turbo */                         int coding_ratio,    /* 2 = 1/2 or 3 = 1/3 */                         int demod_inputs[],  /* IN: input bit vector */                         int nInputs,         /* IN: input vector size */                         double soft_bits[],  /* IN: output bit vector */                         int decoded_bits[],  /* OUT: output bit vector */                         int tail[],          /* IN: tail bits */                         int instance)        /* IN: instance number */{    int i, j, tail_length;    char temp_byte;    ViterbiDecoder *decoder;    int *deintr_symbols, *demod_conv_alphas;    double *intrl_soft_bits, *demod_soft_metrics;    /*     * Get data structures for the current instance.     */    decoder = decoders[instance];    demod_conv_alphas = demod_alphas[instance];    deintr_symbols = deintr_symbs[instance];    intrl_soft_bits = intrl_sbits[instance];    demod_soft_metrics = demod_metrics[instance];    /*     * De-interleave incoming symbol estimates.     */#if 0    wcdma_block_deinterleaver(rows, cols, demod_inputs, deintr_symbols);    wcdma_block_float_deinterleaver(rows, cols, soft_bits, intrl_soft_bits);#else    for (i=0; i < nInputs; i++) deintr_symbols[i] = demod_inputs[i];#endif    tail_length = CONVOLUTION_TAIL_LEN;    /*     * Combine individual bit estimates to 'coding_ratio'-bit symbol estimates.     * Calculate soft metrics for a symbol as a mean of separate bit estimates.     * De-convolute using Viterbi algorithm.     */    if (coding_ratio == 2) {        for (i=0, j=0; i < nInputs; i+=2) {            temp_byte = 0;            set_bit_in_byte((char)demod_inputs[i  ], 1, &temp_byte);            set_bit_in_byte((char)demod_inputs[i+1], 0, &temp_byte);            demod_conv_alphas[j] = (int)temp_byte;            demod_soft_metrics[j++] =                (intrl_soft_bits[i] + intrl_soft_bits[i+1])/2;        } /* for */        wcdma_dec_R1o2_k9_conv( decoder, demod_conv_alphas,                                demod_soft_metrics, nInputs/2,		                tail, tail_length, decoded_bits);    } else if (coding_ratio == 3) {        for (i=0, j=0; i < nInputs; i+=3) {            temp_byte = 0;            set_bit_in_byte((char)demod_inputs[i  ], 2, &temp_byte);            set_bit_in_byte((char)demod_inputs[i+1], 1, &temp_byte);            set_bit_in_byte((char)demod_inputs[i+2], 0, &temp_byte);            demod_conv_alphas[j] = (int)temp_byte;            demod_soft_metrics[j++] =              (intrl_soft_bits[i]+intrl_soft_bits[i+1]+intrl_soft_bits[i+2])/3;        } /* for */        wcdma_dec_R1o3_k9_conv( decoder, demod_conv_alphas,                                demod_soft_metrics, nInputs/3,		                tail, tail_length, decoded_bits);    } else {        printf("wcdma_decoding_conv: Incorrect coding ratio %d\n.",               coding_ratio);        return(-1);    }    return(0);}/* -------------------------------------------------------------------- *//* * Function:    wcdma_chdecoding_free * Desc.:       Convolutional decoding and de-interleaving clean up. * * Note: */void wcdma_chdecoding_free(int instance){    free(decoding_metrics[instance]);    free(encoders[instance]);    free(decoders[instance]);    free(deintr_symbs[instance]);    free(demod_alphas[instance]);    free(intrl_sbits[instance]);    free(demod_metrics[instance]);    /*     * Update instance allocation list.     */    chdec_alloc_list[instance] = FREE_INSTANCE;    decoder_instances--;    return;}/* -------------------------------------------------------------------- */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区最好精华液| 国产一区久久久| 国产乱国产乱300精品| 色综合天天视频在线观看| 日韩精品一区二区三区中文不卡| 一区在线观看免费| 韩国av一区二区| 欧美一区二区三区思思人| 亚洲久本草在线中文字幕| 国产精品 日产精品 欧美精品| 51久久夜色精品国产麻豆| 1000精品久久久久久久久| 国产电影一区二区三区| 欧美一级高清片| 亚洲精品v日韩精品| 粉嫩av一区二区三区| 欧美精品久久久久久久多人混战| 国产精品久久久久久久久果冻传媒 | 国产精品乱码人人做人人爱| 国内精品伊人久久久久av影院 | 精品日韩av一区二区| 亚洲成人黄色小说| 国产成人免费网站| 国产亚洲欧美日韩日本| 激情六月婷婷综合| 国产亚洲欧美在线| 国产老女人精品毛片久久| 久久亚区不卡日本| 国产精品99久久久久久有的能看 | 亚洲欧美日韩电影| 色婷婷一区二区| 亚洲精品成人少妇| 欧美日韩中文国产| 免费久久精品视频| xvideos.蜜桃一区二区| 国产精品自在欧美一区| 亚洲国产精品精华液2区45| 国产一区二区三区美女| 中文一区在线播放| 色婷婷综合中文久久一本| 伊人性伊人情综合网| 欧美视频一区在线观看| 婷婷夜色潮精品综合在线| 欧美一级电影网站| 国产一区视频在线看| 国产精品丝袜在线| 在线一区二区三区| 毛片一区二区三区| 国产视频一区二区三区在线观看| 国产v综合v亚洲欧| 夜夜揉揉日日人人青青一国产精品| 欧美三级在线视频| 久久99精品国产.久久久久久| 国产午夜一区二区三区| 在线观看一区二区视频| 人人狠狠综合久久亚洲| 亚洲国产精品t66y| 欧美日韩亚洲综合在线 | 婷婷久久综合九色综合伊人色| 欧美一区二区三区四区久久| 国产精品一二三区| 一级女性全黄久久生活片免费| 91精品国产aⅴ一区二区| 国产寡妇亲子伦一区二区| 亚洲欧美电影一区二区| 精品精品国产高清a毛片牛牛| 成人国产视频在线观看| 日韩电影在线观看网站| 国产免费久久精品| 91精品一区二区三区在线观看| 国产九色sp调教91| 日韩1区2区3区| 亚洲少妇最新在线视频| 久久综合999| 欧美日韩高清影院| 99久久国产综合色|国产精品| 日韩在线一区二区三区| 中文字幕在线不卡| xnxx国产精品| 欧美一级夜夜爽| 色婷婷综合久久久久中文| 黄色成人免费在线| 丝袜美腿亚洲色图| 夜夜操天天操亚洲| 国产精品三级在线观看| 精品久久久三级丝袜| 欧洲生活片亚洲生活在线观看| 国产一区美女在线| 麻豆精品精品国产自在97香蕉| 一区二区三区日本| 中文字幕制服丝袜一区二区三区| 日韩三级在线观看| 欧美高清性hdvideosex| 一本到不卡精品视频在线观看| 国产精品伊人色| 久久不见久久见免费视频1| 亚洲国产精品尤物yw在线观看| 136国产福利精品导航| 久久婷婷国产综合国色天香| 91精品国产一区二区三区| 欧美制服丝袜第一页| 色综合天天综合狠狠| 99久久精品费精品国产一区二区| 国产精品亚洲一区二区三区妖精| 久久国产日韩欧美精品| 蜜臀久久99精品久久久久宅男 | 亚洲精品国产无套在线观| 国产拍揄自揄精品视频麻豆| 亚洲精品一区二区三区蜜桃下载| 91精品午夜视频| 9191久久久久久久久久久| 欧美伦理影视网| 777亚洲妇女| 日韩午夜电影在线观看| 日韩一区二区三区观看| 日韩一区二区三区四区五区六区 | 中文字幕av一区二区三区高| 国产女人18水真多18精品一级做| 久久久久国色av免费看影院| 久久久久久97三级| 国产精品国产自产拍在线| 日韩一区在线看| 亚洲一区二区视频在线观看| 亚洲国产毛片aaaaa无费看| 婷婷中文字幕一区三区| 久久精品国产77777蜜臀| 国产一区二区三区在线看麻豆| 国产激情视频一区二区三区欧美 | 国内精品国产三级国产a久久| 国产麻豆91精品| 成人爱爱电影网址| 色偷偷88欧美精品久久久| 欧美男女性生活在线直播观看| 欧美日韩卡一卡二| 久久综合九色综合97婷婷女人| 国产精品青草综合久久久久99| 一区免费观看视频| 日韩综合小视频| 成人性生交大合| 91成人国产精品| 91精品国产综合久久久久久漫画| 久久先锋资源网| 亚洲一二三区不卡| 国产在线视视频有精品| 色一情一伦一子一伦一区| 日韩丝袜情趣美女图片| 日本一区二区三区电影| 性做久久久久久免费观看 | 欧美色图片你懂的| www激情久久| 亚洲精选视频在线| 精品一二三四区| 在线日韩一区二区| 久久香蕉国产线看观看99| 亚洲一级在线观看| 国产成人综合网站| 欧美一二三区在线观看| 国产精品乱码一区二区三区软件| 丝袜美腿亚洲一区| 9色porny自拍视频一区二区| 日韩欧美www| 亚洲综合在线观看视频| 国产一区二区免费视频| 欧美人动与zoxxxx乱| 国产精品第一页第二页第三页| 日韩电影免费在线| 91黄色激情网站| 国产精品视频第一区| 韩国在线一区二区| 555www色欧美视频| 亚洲一区在线观看网站| 粉嫩嫩av羞羞动漫久久久| 日韩一级在线观看| 香蕉乱码成人久久天堂爱免费| 91在线国产福利| 国产精品伦理一区二区| 极品少妇一区二区| 日韩精品一区二区三区在线观看| 亚洲国产成人高清精品| 91视频com| 亚洲色图在线播放| 97se亚洲国产综合在线| 国产精品视频线看| 高清国产一区二区三区| 久久免费午夜影院| 国产美女视频一区| 精品国产三级电影在线观看| 蜜乳av一区二区| 在线综合亚洲欧美在线视频| 亚洲成人黄色影院| 欧美日韩精品福利| 婷婷亚洲久悠悠色悠在线播放| 色伊人久久综合中文字幕| 亚洲欧美日韩系列| 色婷婷精品大视频在线蜜桃视频| 国产精品女主播在线观看| 成人综合在线网站| 亚洲欧洲av一区二区三区久久| 北岛玲一区二区三区四区| 国产精品白丝在线|