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

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

?? rake.c

?? matlab實現wcdma的全過程
?? C
字號:
/* | | 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:      RAKE receiver main module | Author:      Tommi Makelainen, Nokia Research Center/NIST | Date:        February 3, 1999 | | History: |              Februrary 3, 1999 Tommi Makelainen |                      Initial version. | |              April 7, 1999 Tommi Makelainen |                      Updated the whole algorithm. | |              May 7, 1999 Tommi Makelainen |                      Corrected indexing error in finger combining. | |              May 27, 1999 Tommi Makelainen |                      Added extraction of pilot symbols from |                      input data stream. */#include <stdio.h>#include <stdlib.h>#include <math.h>#include "config_wcdma.h"#include "spreading.h"#include "rake.h"#ifndef TRUE#define TRUE 1#define FALSE 0#endif /* TRUE *//* ------------ S T A T I C   D A T A   S T R U C T U R E S ----------- *//* * Allocation list of available rake receivers and the current count. */static enum instance_state rake_alloc_list[MAX_RAKES] = { FREE_INSTANCE,              FREE_INSTANCE, FREE_INSTANCE, FREE_INSTANCE, FREE_INSTANCE,              FREE_INSTANCE, FREE_INSTANCE };static rake_instance_count = 0;/* * Parameters specific for each rake. */static int init_flags[MAX_RAKES] = { TRUE, TRUE, TRUE, TRUE,                                     TRUE, TRUE, TRUE, TRUE };double path_select_level[MAX_RAKES] = { 0 };static finger_type stored_fingers[MAX_RAKES][MAX_FINGERS];static mem_chips_t old_chips[MAX_RAKES];static rake_data_type rake_data[MAX_RAKES];static int pilot_len[MAX_RAKES];static finger_count[MAX_RAKES];/* * Initialization flag for static data structures. */static int general_init_flag = FALSE;/* static mem_chips_t prev_rake_chips; *//* -------------------------------------------------------------------- *//* * Function:	wcdma_rake_init * Desc.:	Inits rake receiver and returns the allocated *              instance number. * * Returns:	=> 0 allocated instance number, -1 if no free rakes. * * Note:	 */int wcdma_rake_init(        int pilot_length,               /* IN: length of pilot in frame                                               (in chips) */        double finger_inc_level,	/* IN: finger select threshold */        int nFingers)			/* IN: number of fingers to use */{    int i, instance;    /*     * If first call, initialize static data.     */    if (general_init_flag == FALSE) {        for (i=0; i < MAX_RAKES; i++) {            rake_alloc_list[i] = FREE_INSTANCE;            init_flags[i] = TRUE;        } /* for */        general_init_flag = TRUE;    } /* if general_init_flag */    /*     * Find first free instance number.     */    instance = -1;    for (i=0; i < MAX_RAKES; i++) {        if (rake_alloc_list[i] == FREE_INSTANCE) {            instance = i;            break;        }    }    if (instance == -1) return(-1); /* no free instances */               /*     * Store rake specific data.     */    init_flags[instance] = TRUE;    path_select_level[instance] = finger_inc_level;    finger_count[instance] = nFingers;    pilot_len[instance] = pilot_length;    /*     * Update rake allocation list and count.     */    rake_alloc_list[instance] = INSTANCE_IN_USE;    rake_instance_count++;    return(instance);}/* -------------------------------------------------------------------- *//* * Function:	wcdma_rake_free * Desc.:	Frees one rake reservation. * * Note:	 */void wcdma_rake_free(int instance){    rake_alloc_list[instance] = FREE_INSTANCE;    rake_instance_count--;    return;}/* -------------------------------------------------------------------- *//* * Function:	wcdma_rake_receiver * Desc.:	Collects multipath components of the known signature. * * Note:	 *		Channel impulse response is expected as an input and *		is not estimated from the received signal. *		Each path is followed until the corresponding channel *		tap level goes below the given threshold. */int wcdma_rake_receiver(           int instance,	/* IN: instance number */	   double data[],	/* IN: input data symbol vector */           int data_len,	/* IN: length of input data vector */           int code[],		/* IN: spreading code vector */           int code_len,	/* IN: length of spreading code */           int sf,		/* IN: Chip/data rate, i.e. spreading factor */           int ch_delays[],	/* IN: Channel estimate */           double ch_amplitudes[],/* IN: Channel estimate */           int ch_len,		/* IN: Channel estimate */           int *out_len,	/* OUT: Number of of output symbols */           int *out_delay,	/* OUT: Rx delay to Tx in chips */           double out[])	/* OUT: despreaded output symbol vector */{     int i;    static int first_run = TRUE;    mem_chips_t *prev_rake_chips;    rake_data_type *rake_datum;    double inc_level;    int nFingers;    int pilot_length;    int delay, offset;    finger_type *fingers;    /*     * Get data for this rake instance.     */    first_run = init_flags[instance];    nFingers = finger_count[instance];    fingers = (finger_type *)&stored_fingers[instance];    inc_level = path_select_level[instance];    pilot_length = pilot_len[instance];    rake_datum = &rake_data[instance];    prev_rake_chips = &old_chips[instance];    /*     * Calculate delays for N multipath components from the channel     * impulse response.     * Check do we have to change the finger allocation.     */    wcdma_rake_finger_alloc(instance, first_run,                    ch_delays, ch_amplitudes, ch_len, code_len, data_len,                    nFingers, fingers, prev_rake_chips, rake_datum);    /*     * Despread each multipath component currently in the fingers.     *     * Each slot contains 'pilot_length' pilot chips in its start.     * Below x marks pilot chips and o marks data fields.     *     * tx slots:  /xxooooo\ /xxooooo\ /xxooooo\ /xxooooo\     * rx slots:      /xxooooo\ /xxooooo\ /xxooooo\ /xxooooo\     *            ^         ^         ^         ^     * sampling interval is ^     *     * Due to the simulation strategy tx and rx is simulated     * with common clock and sampling interval. That cuts rx slots     * which are input to rake in the middle of a slot.     *     * Despreading ignores pilot chips.     */    if (first_run == TRUE) {        for (i=0; i < nFingers; i++) {            delay = fingers[i].delay;            wcdma_rake_symbol_direct(i, data + delay + pilot_length,                                     data_len - delay - pilot_length,                                     code, code_len,                                     fingers+i, prev_rake_chips);            fingers[i].old_chips =                              (data_len - delay - pilot_length) % code_len;        } /* for nFingers */        init_flags[instance] = first_run = FALSE;    } else { /* if not first_run */        for (i=0; i < nFingers; i++) {            delay = data_len - fingers[i].delay;            wcdma_rake_symbol_delayed(i, data,                                 data_len, code, code_len,                                 fingers+i, prev_rake_chips);            offset = code_len - fingers[i].old_chips;            if (offset == code_len) offset = 0;            wcdma_rake_symbol_direct(i, data + offset + pilot_length,                                     data_len - offset - pilot_length,                                     code, code_len,                                fingers+i, prev_rake_chips);        } /* for nFingers */    } /* else */    /*     * Save unused chips for next round (max one symbol).     */    wcdma_rake_finger_memory_save(data, data_len, code_len, prev_rake_chips);    /*     * Combine the finger outputs to a single despreaded output.     * Only fingers above given threshold are used for the estimate.     */    wcdma_rake_fingers_combine(fingers, nFingers, out, out_len);    return(0);} /* wcdma_rake_receiver *//* -------------------------------------------------------------------- */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97国产一区二区| 国产精品久久久久久久久果冻传媒| 99久久99久久精品国产片果冻| 老司机精品视频在线| 蜜臀av一区二区在线观看| 亚洲成人777| 亚洲午夜久久久久| 亚洲成人一区二区在线观看| 亚洲自拍偷拍图区| 亚洲午夜成aⅴ人片| 亚洲午夜久久久久久久久电影院| 亚洲国产一区在线观看| 亚洲一级二级在线| 亚洲国产另类精品专区| 五月天一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 午夜久久久久久| 麻豆极品一区二区三区| 国产最新精品精品你懂的| 国内国产精品久久| 成人午夜电影小说| 色婷婷av一区二区三区软件| 在线观看欧美日本| 欧日韩精品视频| 欧美一区二区精品| 久久精品亚洲精品国产欧美 | 97成人超碰视| 色综合天天视频在线观看 | 亚洲男人的天堂网| 一区二区三区日韩欧美| 日韩主播视频在线| 精品一区二区精品| 不卡av在线网| 欧美日韩免费电影| 精品国产露脸精彩对白| 中文av一区二区| 亚洲一区二区在线播放相泽| 久久精品噜噜噜成人88aⅴ| 国产91清纯白嫩初高中在线观看| 色综合久久六月婷婷中文字幕| 欧美区一区二区三区| 久久先锋资源网| 亚洲欧美电影一区二区| 免费精品视频在线| 成人丝袜高跟foot| 欧美日本一道本在线视频| 精品久久国产老人久久综合| 综合欧美一区二区三区| 日韩国产一二三区| 成人午夜看片网址| 欧美浪妇xxxx高跟鞋交| 国产精品素人视频| 日韩成人一区二区| 91亚洲精品久久久蜜桃网站| 日韩午夜激情电影| 亚洲人成7777| 国模无码大尺度一区二区三区| 色婷婷久久综合| 欧美精品一区二区三区很污很色的| 中文字幕一区二区三| 奇米色一区二区| 99久久久精品免费观看国产蜜| 欧美一区在线视频| 亚洲精品日韩专区silk| 国产精品影视在线| 欧美日韩精品专区| 国产精品美女久久久久av爽李琼| 日韩国产高清在线| 91国产免费看| 国产精品看片你懂得 | 91精品国产高清一区二区三区 | 欧美亚洲另类激情小说| 国产亚洲一区二区三区在线观看| 亚洲va在线va天堂| 91丨九色丨黑人外教| 国产午夜精品理论片a级大结局| 视频一区视频二区中文| 色av成人天堂桃色av| 中文字幕国产一区| 国产综合久久久久影院| 欧美一激情一区二区三区| 夜夜嗨av一区二区三区| 99久久99久久久精品齐齐 | 韩国av一区二区| 欧美精品一级二级| 亚洲国产欧美在线人成| 色一区在线观看| 亚洲欧美日韩小说| av午夜一区麻豆| 国产亚洲综合在线| 国产福利91精品| 久久精品欧美一区二区三区不卡| 久久99热国产| 欧美mv日韩mv国产网站app| 日本中文字幕一区二区视频| 欧美体内she精高潮| 亚洲制服丝袜一区| 欧美亚洲国产一区在线观看网站| 国产精品久久午夜夜伦鲁鲁| 成人av在线播放网站| 国产精品美女久久久久久2018| 粉嫩一区二区三区在线看| 国产午夜久久久久| 国产99精品视频| 中文一区二区在线观看| 成人不卡免费av| 亚洲欧洲无码一区二区三区| 99久久777色| 一区二区高清免费观看影视大全| 色哟哟精品一区| 亚洲国产日日夜夜| 欧美男女性生活在线直播观看| 亚洲成人激情av| 51精品国自产在线| 久久综合综合久久综合| 久久综合久久久久88| 国产精品一区二区你懂的| 欧美激情在线观看视频免费| 成人午夜精品在线| 亚洲欧美激情一区二区| 在线观看欧美黄色| 蜜臀av国产精品久久久久| 欧美精品一区二区高清在线观看 | 在线观看免费视频综合| 婷婷开心久久网| 欧美v日韩v国产v| 国产精品影视网| 亚洲欧洲美洲综合色网| 欧美中文字幕久久| 日本不卡一二三| 久久久av毛片精品| 91麻豆精品视频| 日韩电影在线看| 欧美激情综合在线| 在线观看91精品国产入口| 午夜欧美一区二区三区在线播放| 日韩三级精品电影久久久| 国产成人精品影院| 洋洋成人永久网站入口| 精品毛片乱码1区2区3区| 国产传媒日韩欧美成人| 亚洲国产一区二区a毛片| 精品国产乱码久久久久久牛牛| aaa国产一区| 美女视频黄频大全不卡视频在线播放| 国产午夜亚洲精品羞羞网站| 日本精品视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品美女一区二区| 欧美一区二区三区小说| 成人午夜碰碰视频| 日韩av一级电影| 中文字幕成人在线观看| 欧美日韩国产高清一区| 国产成人免费在线| 爽好久久久欧美精品| 中文字幕精品综合| 欧美一区二区免费| 色婷婷综合久久久中文字幕| 经典三级视频一区| 亚洲一区二区三区美女| 欧美韩国一区二区| 日韩一区二区在线观看| 色噜噜狠狠色综合欧洲selulu| 蜜桃一区二区三区在线观看| 一区二区三区中文字幕电影| 久久久美女艺术照精彩视频福利播放| 欧美亚洲尤物久久| av一二三不卡影片| 久久丁香综合五月国产三级网站| 亚洲精品欧美综合四区| 欧美国产精品v| 欧美一区二区三区日韩视频| 91视频在线看| 国产成人a级片| 免费三级欧美电影| 亚洲成人自拍一区| 亚洲视频免费在线| 国产色婷婷亚洲99精品小说| 日韩欧美综合一区| 欧美三级视频在线观看| 91毛片在线观看| 成人免费视频免费观看| 国产精品99久久久久久似苏梦涵 | 91伊人久久大香线蕉| 国产经典欧美精品| 久久精品国产亚洲aⅴ| 五月激情综合网| 夜夜爽夜夜爽精品视频| 亚洲精品老司机| 国产精品久久看| 国产精品久久久久久久久晋中 | 欧美日韩黄色一区二区| 91美女视频网站| 99亚偷拍自图区亚洲| 国产黄人亚洲片| 国产一区二区成人久久免费影院| 蜜乳av一区二区三区| 日韩av一二三| 日韩福利电影在线观看|