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

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

?? test_ldpc_mimo_general.c

?? This a framework to test new ideas in transmission technology. Actual development is a LDPC-coder in
?? C
字號:
/***************************************************************************   test_ldpc_mimo_general.c - a NxN MIMO 2-fold ldpc code                            -------------------    begin                : 01 Sept 2003     authors              : Nicolae Chiurtu    emails               : Nicolae.Chiurtu@epfl.ch ***************************************************************************//***************************************************************************                                 Changes                                 ------- date - name - description 03/09/01 - Nicou - Begin 03/09/03 - ineiti - added complex channel 10 Dec 2003 - nicu & linus - make it general to work for up to 4 by 4 04/03/03 - ineiti - added a small description  **************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#include <stdlib.h>#include <complex.h>#include <fpu_control.h>#include "spc.h"#include "std.h"#include "math.h"#define DBG_LVL 0char desc[] ="Description:\n""This is a general NxN MIMO LDPC-code simulation, where 1<=N<=4.\n""It shows the result for increasing sigma. The BER for sigmas < 0.7\n""should be 0. Above that, the BER should rise to 0.2 or so.\n""The channel-matrix H is 'a_mn + b_mn * i', where a_mn and b_mn\n""are gaussian variables with variance 1 and mean 0.\n\n";// The number of experiments and variances#define NO_VAR 12#define NO_EXP 1#define NO_TX 2#define NO_RX 2#define BLOCK_LENGTH 4000double getSigma(double);complex double getSigmaComplex(complex double);struct chain_t *test_chain[ NO_TX + NO_RX ];void *start_it( void *arg ) {  swr_sdb_id mid[NO_TX],src,block_complex;  swr_sdb_id split, tsd, rcd, mid_rx[NO_RX],encoder,decoder;  double total_errors;  int a, b, c, d, e;  int errors, total_info_bits;  int MAX_NO_RX;  double ber = 0.0;  double real_sigma;  double sigma_array[NO_VAR] = {3200., 6400., 9600., 12800., 16000., 19200., 22400.,			     25600., 28800., 32000., 35200., 38400.};  complex double h[NO_RX][NO_TX];  // Division by zero and overflow  /* { *//*     fpu_control_t fpu_err = 0x37f - _FPU_MASK_ZM - _FPU_MASK_OM; *//*     _FPU_SETCW( fpu_err ); *//*   } */  PR( "Setting up main-chain\n" );   // This chain simulates a simple 2x2 MIMO with two-folded LDPC  test_chain[0] = swr_chain_create(NEW_SPC_VAR( "random", src ),				   NEW_SPC_VAR( "test_data_send", tsd),				   NEW_SPC_VAR( "ldpc_encode_2fold", encoder),				   NEW_SPC( "mapper"),				   NEW_SPC_VAR( "split", split ),				   NEW_SPC_VAR( "chest_send", mid[ 0 ] ),				   NEW_SPC_VAR( "block_4by4_complex", block_complex),				   NEW_SPC_VAR( "chest_rcv", mid_rx[ 0 ] ),				   NEW_SPC_VAR( "ldpc_decode_2fold_general", decoder),				   NEW_SPC_VAR( "test_data_rcv", rcd ),				   CHAIN_END );  MAX_NO_RX = swr_sdb_get_stats_int( block_complex, "max_no_rx" );  swr_sdb_set_config_int( block_complex, "size", BLOCK_LENGTH / 2 / NO_TX + 256 );        PR( "Setting up secondary chains\n" );  // Doing transmission chains 1..NO_TX  for ( a=1; a<NO_TX; a++ ){    test_chain[ a ] = swr_chain_create( OLD_SPC_OUT( split, a ),					NEW_SPC_VAR( "chest_send", mid[ a ] ),					OLD_SPC_IN( block_complex, a ),					CHAIN_END );  }  // Doing reception chains 1..NO_RX  for ( a=1; a<NO_RX; a++ ){    test_chain[ NO_TX + a - 1 ] =      swr_chain_create( OLD_SPC_OUT( block_complex, a ),			NEW_SPC_VAR( "chest_rcv", mid_rx[ a ] ),			OLD_SPC_IN( decoder, a ),			CHAIN_END );  }  PR( "Chains are set up\n" );   // Precision of the DAD module  swr_sdb_set_config_int( block_complex, "precision", 14 );    // setting the number of antennas for the block_complex  for ( a=0; a<NO_RX; a++ ){    swr_sdb_set_config_int( mid_rx[a], "num_of_antennas", NO_RX );    swr_sdb_set_config_int_array( decoder, "chest", a, mid_rx[a] );    swr_sdb_set_config_int( mid_rx[a], "circ_ext", 0 );  }  for ( a=0; a<NO_TX; a++ ){    swr_sdb_set_config_int( mid[a], "index", a );    swr_sdb_set_config_int( mid[a], "circ_ext", 0 );  }  swr_sdb_set_config_int( rcd, "mode", 1 );  swr_sdb_set_config_int( encoder, "ldpc_code_id", 1 );  swr_sdb_set_config_int( decoder, "ldpc_code_id", 1 );  swr_sdb_set_config_int( decoder, "iterations", 15 );  swr_sdb_set_config_int( decoder, "iterations_left", 1 );  swr_sdb_set_config_int( decoder, "iterations_right", 1 );  swr_sdb_set_config_int( decoder, "no_tx", NO_TX );  swr_sdb_set_config_int( decoder, "no_rx", NO_RX );  swr_sdb_set_config_int( encoder, "bplcn", NO_TX * 2 );  PR( "Connecting the test_data modules\n" );  swr_conn_add(tsd, 1,rcd, 1);    //swr_sdb_set_config_int( snk, "flag", 1 ); //dump    PR( "Sending first message\n" );    for (a = 0; a < NO_VAR; a++ ) {        // setting the noise variance        for (c = 0; c < NO_RX; c++ ) {      swr_sdb_set_config_complex_array( block_complex, "sigma", c, 					sigma_array[a] * ( 1.0 + 1.0*I ) );    }        total_errors = 0.0;    for (b = 0; b < NO_EXP; b++){            // setting the channel            for(d = 0; d < NO_RX; d++){	for(e = 0; e < NO_TX; e++){	  h[d][e] = getSigmaComplex(1.0 + 1.0*I);	  swr_sdb_set_config_complex_array( block_complex, "h", 					    d * MAX_NO_RX + e, h[d][e] ); 	}      }            // print the channel and the variance to compare with the one which we estimate later      // works for a = 0.01            for ( d=0; d<NO_RX; d++ ){	for ( e=0; e<NO_TX; e++ ){	  PR_DBG_CL( 4, "tr-h%i%i(%g:%gi) ", d, e, 		     floor(creal(h[d][e])*327.67),		     floor(cimag(h[d][e])*327.67 ));	}      }            PR_DBG_CL( 4, "tr-var1(%g) tr-var2(%g) \n" ,		 (double) pow(sigma_array[a]*0.01,2), 		 (double) pow(sigma_array[a]*0.01,2) );                  swr_sdb_send_msg( src, SUBS_MSG_USER, NULL, -1 );            //PR( "Total data: %i, Errors: %i\n",      //  swr_sdb_get_stats_int( rcd, "total" ),      //  swr_sdb_get_stats_int( rcd, "error" ) );            total_info_bits = swr_sdb_get_stats_int( rcd, "total" );      errors = swr_sdb_get_stats_int( rcd, "error" );      total_errors += errors;/*       PR("Noise Variance ant 1 = [%i], ant 2  = [%i] \n", *//* 	 swr_sdb_get_stats_int( mid_rx[0], "noise_var_real"),  *//* 	 swr_sdb_get_stats_int( mid_rx[1], "noise_var_real")); */          } // for number experiments        ber = (double) total_errors / (NO_EXP * total_info_bits);    real_sigma = (double) sigma_array[ a ] / 32767;        // PR("Info bits = %i, errors = %i\n", total_info_bits, errors);    PR("Sigma = %g, BER = %g\n", real_sigma, ber);      } // for the number of variances    return 0;}swr_spc_id_t spm_id;struct thread start;/** * This function is called upon "insmod" and is used to register the * different parts of the module to the SPM. */int um_module_init(void) {  int i;  PR_CL( desc );  for ( i=0; i<NO_TX+NO_RX; i++ ){    test_chain[i] = NULL;  }  if ( swr_thread_init( &start, start_it, NULL ) < 0 )    goto first_no_stack;  return 0;first_no_stack:  PR_DBG( 0, "Couldn't allocate stack\n" );  return -1;}void um_module_exit( void ) {  int i;  swr_thread_free( &start, NULL );  for ( i=NO_TX+NO_RX-1; i>=0; i-- ){    swr_chain_destroy( test_chain[ i ] );  }  PR( "Finished and cleaned up\n" );}double getSigma( double amplitude ) {  unsigned short x[3];  double u, v, w, alpha;  x[0] = (unsigned short)((get_time_usec()>>00)&0xffff);  x[1] = (unsigned short)((get_time_usec()>>16)&0xffff);  x[2] = (unsigned short)((get_time_usec()>>00)&0xffff);  do {    u = 2*erand48(x)-1;    v = 2*erand48(x)-1;    w = u*u + v*v;  } while (w>=1);  alpha = sqrt( -2 * log(w)/w);  return alpha * u * amplitude;}complex double getSigmaComplex( complex double amplitude ){    return getSigma( creal( amplitude ) ) +    getSigma( cimag( amplitude ) ) * I;}module_init( um_module_init );module_exit( um_module_exit );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类欧美日韩国产在线| 欧美在线你懂的| 色999日韩国产欧美一区二区| 欧美性高清videossexo| 久久久亚洲高清| 亚洲高清视频中文字幕| 国产成人免费视频精品含羞草妖精 | 亚洲日韩欧美一区二区在线| 午夜精品久久久| caoporm超碰国产精品| 精品电影一区二区三区| 一区二区三区视频在线看| 国产麻豆视频精品| 欧美一区二区女人| 亚洲午夜一区二区三区| 91在线小视频| 欧美激情综合五月色丁香| 日本美女一区二区三区视频| 91视频www| 中文字幕va一区二区三区| 精品中文字幕一区二区| 欧美一区二区播放| 三级欧美韩日大片在线看| 91久久精品日日躁夜夜躁欧美| 国产女人18毛片水真多成人如厕| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美性一区二区| 亚洲国产欧美一区二区三区丁香婷| 成人黄色片在线观看| 国产亚洲欧洲997久久综合| 久久精品国产精品亚洲红杏| 777午夜精品视频在线播放| 性感美女极品91精品| 精品1区2区3区| 亚洲成精国产精品女| 在线一区二区三区四区| 亚洲激情一二三区| 欧美日韩国产小视频在线观看| 亚洲女同一区二区| 欧美日韩一区二区在线观看 | 精品久久久久久最新网址| 日本欧美一区二区三区乱码| 欧美日韩精品欧美日韩精品| 午夜精品国产更新| 欧美tk—视频vk| 国产精品中文字幕一区二区三区| 国产亚洲一区二区三区在线观看| 国产风韵犹存在线视精品| 国产日韩成人精品| 99精品欧美一区二区三区小说| 亚洲丝袜美腿综合| 欧美高清性hdvideosex| 美国一区二区三区在线播放| 精品国产乱码久久久久久闺蜜| 成人一道本在线| 一区二区三区四区中文字幕| 欧美精品九九99久久| 国产真实乱偷精品视频免| 国产欧美日本一区视频| 91国偷自产一区二区三区成为亚洲经典 | 精品国产3级a| 成人av在线资源网| 丝袜美腿亚洲一区二区图片| 337p日本欧洲亚洲大胆精品| 972aa.com艺术欧美| 热久久一区二区| 欧美国产日韩精品免费观看| 欧美主播一区二区三区| 久久福利资源站| 亚洲欧洲制服丝袜| 日韩丝袜情趣美女图片| 成人福利视频在线| 另类小说色综合网站| 最好看的中文字幕久久| 日韩精品专区在线影院重磅| 成人免费精品视频| 天天做天天摸天天爽国产一区| 精品国产在天天线2019| 在线一区二区三区四区| 国产一区二区福利| 视频一区二区三区在线| 欧美国产1区2区| 欧美男男青年gay1069videost | 国产婷婷色一区二区三区四区| 成人精品视频.| 久久精品国内一区二区三区| 自拍偷拍亚洲激情| 一区在线中文字幕| 国产精品国产三级国产a| 国产精品久久久久影视| 精品视频999| av在线播放成人| 狠狠色综合日日| 午夜欧美视频在线观看 | 99re这里只有精品首页| 麻豆精品国产91久久久久久| 一区二区三区四区五区视频在线观看 | 色噜噜狠狠色综合中国| 国产成人精品免费| 久久精品国产色蜜蜜麻豆| 一区二区成人在线视频| 国产精品理论在线观看| 久久综合99re88久久爱| 91精品国产91久久久久久最新毛片 | 韩国毛片一区二区三区| 亚洲国产综合人成综合网站| 日韩理论片在线| 中文字幕欧美三区| 亚洲国产精品精华液ab| 精品日产卡一卡二卡麻豆| 在线看国产一区| 91视频.com| 99久久精品情趣| 色综合久久精品| 91片在线免费观看| 99re这里只有精品6| 91在线视频免费91| 99re热视频精品| 91日韩在线专区| 欧美伊人精品成人久久综合97| 色综合天天天天做夜夜夜夜做| 丁香婷婷综合色啪| 91同城在线观看| 欧美在线一区二区| 欧美肥胖老妇做爰| 欧美成人a视频| 久久久久久久久久久99999| www亚洲一区| 国产精品色婷婷久久58| 国产精品电影院| 亚洲线精品一区二区三区| 亚洲成人综合在线| 九九**精品视频免费播放| 国产一区二区三区在线观看免费 | jvid福利写真一区二区三区| 大胆欧美人体老妇| 91原创在线视频| 欧美性受极品xxxx喷水| 欧美日韩国产另类一区| 日韩一级黄色片| 久久久精品欧美丰满| 中文字幕在线观看不卡| 亚洲成a人在线观看| 精品无人码麻豆乱码1区2区| 国产精品123区| 欧美自拍偷拍一区| 精品乱码亚洲一区二区不卡| 中文乱码免费一区二区| 亚洲综合色丁香婷婷六月图片| 污片在线观看一区二区| 国产乱码精品1区2区3区| 99精品欧美一区二区三区综合在线| 欧美日韩免费一区二区三区视频| 91精品国产美女浴室洗澡无遮挡| 久久看人人爽人人| 一区二区欧美视频| 黄色成人免费在线| 91福利视频久久久久| 日韩欧美不卡一区| 亚洲人成网站影音先锋播放| 男男视频亚洲欧美| 99re热这里只有精品视频| 91精品在线观看入口| 国产精品久久久久久久久免费樱桃| 亚洲成人动漫一区| aaa国产一区| 亚洲精品一区二区三区精华液| 樱桃视频在线观看一区| 国产在线播精品第三| 在线观看亚洲精品视频| 国产三级一区二区三区| 亚洲成人资源在线| 99久久久国产精品免费蜜臀| 欧美一区二区在线不卡| 亚洲最新在线观看| 国产.欧美.日韩| 精品999在线播放| 亚洲bt欧美bt精品| 91麻豆视频网站| 欧美高清一级片在线观看| 老司机精品视频一区二区三区| 一本大道久久精品懂色aⅴ| 国产欧美日韩另类一区| 久久99久久久欧美国产| 欧美精品免费视频| 亚洲一区欧美一区| 99re66热这里只有精品3直播| 久久中文娱乐网| 久久99热99| 精品久久人人做人人爽| 日韩二区三区四区| 在线免费观看一区| 亚洲国产一区二区三区青草影视| 成a人片亚洲日本久久| 亚洲国产精品激情在线观看| 国产精品影音先锋| 久久久久国产精品免费免费搜索| 日韩高清欧美激情| 欧美精品日日鲁夜夜添| 日韩国产欧美一区二区三区|