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

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

?? testturbo.c

?? 信道編解碼中的turbo編解碼程序
?? C
字號:
/*
*******************************************************************************
* ansi c source code
* file name:
*	TestTurbo.c
* abstract:
*	to test the turbo code
* reference:
*	EV-DO specification
* author:
*	Wang Jiaheng	2005-02-04
* revision history:
*	Wang Jiaheng	2005-02-04	original version
*******************************************************************************
*/


/*
*******************************************************************************
*                               include files
*******************************************************************************
*/
#include <stdio.h>
#include <math.h>
#include "Random.h"
#include "FileSearch.h"
#include "ShowProgress.h"
#include "TurboEncoder.h"
#include "TurboDecoder.h"


/*
*******************************************************************************
*			           constants and define declarations
*******************************************************************************
*/
#define	MAX_SIM_POINT_NUM	20
#define FILE_NAME			"TurboMaxSip.txt"
#define PROGRAM_NAME		"TURBO MAXSIP"
#define SIM_MODE			"AWGN"

#define PACKET_SIZE			4096
#define ENCODE_RATE			2
#define ITERATE_TIME		4

#define ENCODE_BIT_LEN		(PACKET_SIZE * ENCODE_RATE)
#define SYMBOL_LEN			ENCODE_BIT_LEN


/*
*******************************************************************************
* 		                    local object definition
*******************************************************************************
*/
/* number of points to be simulated */
int		sim_point_num;
/* SNR of every point (db) */
double	sim_point_snr[MAX_SIM_POINT_NUM];
/* simulation times at every point */
int		sim_point_time[MAX_SIM_POINT_NUM];


/*
*******************************************************************************
*                             function definition
*******************************************************************************
*/
/*
******************************************************************************* 
* description:
*	set the configuration parameters in Tx side
* input: 
*	cfg_file_name: name of the configuration file
* output:
*	if ok, return 1; otherwise retrun 0.
* function reference:
*	FileSearch.c
* author:
*	Wang Jiaheng, 2004-09-22	created
*******************************************************************************
*/
int SetTx(char cfg_file_name[])
{
	/* array for storing the configuration parameters */
	double	para_cfg[2 * MAX_SIM_POINT_NUM + 1];
	/* number of parameters */
	int		num_para;
	int		i;

	/* read parameters from the configuration file */
	if ( !ReadFile(cfg_file_name, &num_para, para_cfg) )
	{
		return 0;
	}
	if ( num_para > 2 * MAX_SIM_POINT_NUM + 1 )
	{
		return 0;
	}

	/* set parameters of simulation points */
	sim_point_num = (int)para_cfg[0];
	if ( (sim_point_num < 0 ) || (sim_point_num > MAX_SIM_POINT_NUM) )
	{
		return 0;
	}
	
	/* save SNR and simulation times of every point */
	for (i = 0; i < sim_point_num; i++)
	{
		sim_point_snr[i] = para_cfg[2*i + 1];
		sim_point_time[i] = (int)para_cfg[2*i + 2];
		if ( sim_point_time[i] < 0 )
		{
			return 0;
		}
	}

	return 1;
}


/*
******************************************************************************* 
* description:
*	initialize all the global variables on Tx side
* input: 
*	none
* output:
*	if ok, return 1; otherwise retrun 0.
* function reference:
*	GlobalDef.h, GlobalVar.c
* author:
*	Wang Jiaheng, 2004-11-01	created
*******************************************************************************
*/
int InitTx(void)
{
	/* set turbo encoder */
	if ( !SetTurboEncoder(PACKET_SIZE) )
	{
		printf("SetTurboEncoder failed !\n");
		return 0;
	}

	/* set random bit */
	if ( !SetRandBit1(7) )
	{
		printf("SetRandBit1 failed !\n");
		return 0;
	}

	/* set noise */
	SetRandGas(1);

	return 1;
}


/*
******************************************************************************* 
* description:
*	main function of the whole simulation platform
* input: 
*	none
* output:
*	if ok, return 1; otherwise retrun 0.
* function reference:
* author:
*	Wang Jiaheng, 2005-02-04	created
*******************************************************************************
*/
int main(void)
{
	int		k;
	int		sim_cnt;
	int		test_cnt;
	int		test_time;
	int		packet_send[PACKET_SIZE];
	int		packet_recv[PACKET_SIZE];
	int		bit_encode[ENCODE_BIT_LEN];
	double	sym_send[SYMBOL_LEN];
	double	sym_recv[SYMBOL_LEN];
	double	noise_var;
	int		bit_len;
	int		sym_len;
	int		packet_len;
	int		valid_len;
	int		bit_total_num;
	int		bit_error_num;
	int		packet_total_num;
	int		packet_error_num;
	char	packet_error_flag;
	FILE	*pf;

	
	/* set parameters for tranmission */
	if ( !SetTx("TxCfg.txt") )
	{
		printf("SetTx failed\n");
		return -1;
	}

	/* open the file */
	pf = fopen(FILE_NAME, "a");
	if ( pf == NULL )
	{
		printf("cannot open the file\n");
		return -1;
	}

	printf("--------------------------------------------------\n");
	printf("Program Name:		%s\n", PROGRAM_NAME);
	printf("Simulation Mode:	%s\n", SIM_MODE);
	printf("Packet Size:		%d\n", PACKET_SIZE);
	printf("Encode Rate:		1/%d\n", ENCODE_RATE);
	printf("Iterate Time:		%d\n", ITERATE_TIME);
	printf("--------------------------------------------------\n\n");
	

	fprintf(pf, "--------------------------------------------------\n");
	fprintf(pf, "Program Name:		%s\n", PROGRAM_NAME);
	fprintf(pf, "Simulation Mode:	%s\n", SIM_MODE);
	fprintf(pf, "Packet Size:		%d\n", PACKET_SIZE);
	fprintf(pf, "Encode Rate:		1/%d\n", ENCODE_RATE);
	fprintf(pf, "Iterate Time:		%d\n", ITERATE_TIME);
	
	fprintf(pf, "--------------------------------------------------\n\n");
	fprintf(pf, "#  | ");
	fprintf(pf, "Eb/Nt       | ");
	fprintf(pf, "FER         | ");
	fprintf(pf, "BER         | ");
	fprintf(pf, "Packet Recv     Packet Error    | ");
	fprintf(pf, "Bit Recv        Bit Error\n");
	fclose(pf);


	/* run simulation at all specified points */
	for (sim_cnt = 0; sim_cnt < sim_point_num; sim_cnt++)
	{
		/* initialize the global variables on Tx side */
		if ( !InitTx() )
		{
			printf("InitTx failed !\n");
			return 0;
		}
		
		/* set variance of the noise */
		noise_var = 0.5 * ENCODE_RATE * pow(10.0, -sim_point_snr[sim_cnt]/10.0);
		
		/* set test time at this point */
		test_time = sim_point_time[sim_cnt];
		valid_len = PACKET_SIZE - 6;
		bit_total_num = 0;
		bit_error_num = 0;
		packet_total_num = 0;
		packet_error_num = 0;
		
		/* output point information */
		printf("--------------------------------------------------\n");
		printf("Point Index:		%d/%d\n", sim_cnt + 1, sim_point_num);
		printf("Point SNR (db):		%.2f\n", sim_point_snr[sim_cnt]);
		printf("Packets To Send:	%d\n", test_time);
		printf("Bits To Send:		%d\n", test_time * valid_len);
		
		
		/* start the Tx and Rx process at the ith point */
		for (test_cnt = 0; test_cnt < test_time; test_cnt++)
		{
			/* generate a packet to send */
			for (k = 0; k < PACKET_SIZE; k++)
			{
				packet_send[k] = RunRandBit1();
			}
			
			
			/* encode the packet */
			if ( !RunTurboEncoder(packet_send, PACKET_SIZE, ENCODE_RATE, bit_encode, &bit_len) )
			{
				printf("RunTurboEncoder failed\n");
				return -1;
			}
			if ( bit_len != ENCODE_BIT_LEN )
			{
				printf("bit_len wrong\n");
				return -1;
			}


			/* map encoded bits to symbols */
			sym_len = bit_len;
			for (k = 0; k < sym_len; k++)
			{
				sym_send[k] = 1 - 2 * bit_encode[k];
			}
			
			
			/* through a AWGN channel */
			for (k = 0; k < sym_len; k++)
			{
				sym_recv[k] = sym_send[k] + RunRandGasMd(0, noise_var);
			}
			
			
			/* decode received symbols */
			if ( !RunTurboDecoder(sym_recv, sym_len, ENCODE_RATE, ITERATE_TIME, packet_recv, &packet_len) )
			{
				printf("RunTurboDecoder failed\n");
				return -1;
			}
			if ( packet_len != PACKET_SIZE )
			{
				printf("packet_len wrong\n");
				return -1;
			}
			
			
			/* compare recieved packets with original packets */
			packet_error_flag = 0;
			for (k = 0; k < valid_len; k++)
			{
				if ( packet_recv[k] != packet_send[k] )
				{
					bit_error_num++;
					packet_error_flag = 1;
				}
			}
			if ( packet_error_flag )
			{
				packet_error_num++;
			}
			bit_total_num += valid_len;
			packet_total_num++;
			
			
			/* show the progress status of the whole process */
			ShowProgress(test_cnt + 1, test_time);
		}

		
		/* output statistics */
		printf("Packets Received:	%d\n", packet_total_num);
		printf("Packets Erroneous:	%d\n", packet_error_num);
		printf("Bits Received:		%d\n", bit_total_num);
		printf("Bits Erroneous:		%d\n", bit_error_num);
		printf("FER:			%.3e\n", (double)packet_error_num / (double)packet_total_num);
		printf("BER:			%.3e\n", (double)bit_error_num / (double)bit_total_num);
		printf("--------------------------------------------------\n\n");
		
		/* store statics to the file */
		pf = fopen(FILE_NAME, "a");
		if ( pf == NULL )
		{
			printf("cannot open the file\n");
			return 0;
		}
		fprintf(pf, "%-2d | ", sim_cnt + 1);
		fprintf(pf, "%-12.2f| ", sim_point_snr[sim_cnt]);
		fprintf(pf, "%-12.3e| ", (double)packet_error_num / (double)packet_total_num);
		fprintf(pf, "%-12.3e| ", (double)bit_error_num / (double)bit_total_num);
		fprintf(pf, "%-16d", packet_total_num);
		fprintf(pf, "%-16d| ", packet_error_num);
		fprintf(pf, "%-16d", bit_total_num);
		fprintf(pf, "%-16d\n", bit_error_num);
		fclose(pf);
	}


	/* changle line in file */
	pf = fopen(FILE_NAME, "a");
	fprintf(pf, "\n\n\n");
	fclose(pf);

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美疯狂性受xxxxx喷水图片| 欧美久久一二区| 伊人色综合久久天天人手人婷| 一本色道久久综合亚洲91| 色综合一区二区| 亚洲综合一二区| 国产精品久久久久久亚洲毛片 | 91麻豆精品国产91久久久久久久久 | 成人免费高清视频在线观看| 丝瓜av网站精品一区二区| 亚洲国产精品成人久久综合一区| 久久网这里都是精品| 欧美va亚洲va在线观看蝴蝶网| 亚洲色大成网站www久久九九| 欧美一区二区私人影院日本| 久久久久9999亚洲精品| 久久国产精品第一页| 日韩亚洲国产中文字幕欧美| 一区二区三区国产精品| 日韩一区二区三区在线| 在线亚洲+欧美+日本专区| 欧美一区二区三区视频在线观看| 亚洲精品免费在线播放| 亚洲另类在线一区| 懂色av一区二区三区免费观看| 日韩欧美亚洲国产另类| 日韩电影一区二区三区四区| 日本二三区不卡| 一区二区三区四区在线免费观看| 成人av网站免费| 国产精品欧美经典| 成人久久18免费网站麻豆| 国产午夜精品一区二区| 国产成人自拍高清视频在线免费播放| 日韩视频免费观看高清完整版在线观看| 亚洲一二三区不卡| 欧美日韩国产首页| 韩国一区二区视频| 久久中文字幕电影| 国产精品91一区二区| 国产亚洲欧美在线| av一区二区三区在线| 亚洲视频 欧洲视频| 91论坛在线播放| 午夜在线电影亚洲一区| 欧美日韩国产影片| 日本成人在线一区| 精品捆绑美女sm三区| 国产乱码精品一区二区三区五月婷| 国产香蕉久久精品综合网| 成人福利在线看| 亚洲五码中文字幕| 欧美变态tickling挠脚心| 国产剧情一区在线| 一二三区精品视频| 日韩欧美123| 国产iv一区二区三区| 亚洲精品第1页| 91精品国产综合久久久久| 日本一道高清亚洲日美韩| 成人亚洲一区二区一| 成人av网站在线| 欧美日韩高清一区二区三区| 精品国产三级电影在线观看| 夜夜嗨av一区二区三区| 视频一区二区三区入口| 国产精品夜夜嗨| 欧美日韩国产a| 国产精品素人一区二区| 日韩高清中文字幕一区| 色欧美片视频在线观看| 欧美在线999| 欧美国产日韩亚洲一区| 视频在线在亚洲| 色综合久久久久久久久| 国产午夜精品一区二区三区视频| 久草这里只有精品视频| 欧美精品一区二区久久久| 欧美性受极品xxxx喷水| 色婷婷久久99综合精品jk白丝| 97久久超碰精品国产| 日韩免费在线观看| 婷婷夜色潮精品综合在线| 久久精品亚洲乱码伦伦中文| 精品国产91久久久久久久妲己| 亚洲乱码国产乱码精品精可以看 | 久久久久99精品一区| 欧美日韩一区 二区 三区 久久精品| 狠狠色综合播放一区二区| 亚洲国产精品人人做人人爽| 中文字幕av资源一区| 欧美一区二区日韩一区二区| 色网站国产精品| 成人激情小说网站| 久草在线在线精品观看| 日本在线观看不卡视频| 亚洲午夜影视影院在线观看| 国产精品久久久久影院色老大| 日韩欧美在线一区二区三区| 欧美在线小视频| 一本大道av一区二区在线播放| 99久久综合国产精品| 中文字幕中文字幕在线一区| 色哟哟亚洲精品| 日日嗨av一区二区三区四区| 亚洲猫色日本管| 国产精品乱码人人做人人爱| 精品国产免费一区二区三区四区 | 国产成人av影院| 久久精品国产99| 免费观看久久久4p| 香蕉成人啪国产精品视频综合网| 一区二区高清在线| 亚洲精品乱码久久久久久久久 | 国产亚洲精品福利| 精品国产三级电影在线观看| 久久一区二区三区四区| www国产亚洲精品久久麻豆| 欧美岛国在线观看| 日韩精品中文字幕一区| 精品国产凹凸成av人网站| 久久免费视频色| 国产日韩欧美高清| 国产精品女上位| 中文字幕一区二区三区不卡在线| 日韩码欧中文字| 亚洲国产视频直播| 麻豆91免费看| 国产1区2区3区精品美女| 成人精品视频一区| 色综合久久天天| 亚洲h精品动漫在线观看| 亚洲精品福利视频网站| 欧美大尺度电影在线| 欧美成人乱码一区二区三区| 欧美精品一区二区久久久| 亚洲国产一区二区三区| 91国产丝袜在线播放| 91精品中文字幕一区二区三区| 国产综合色视频| 精品裸体舞一区二区三区| 色老头久久综合| 欧美精品vⅰdeose4hd| 欧美第一区第二区| 成人欧美一区二区三区黑人麻豆| 精品国产网站在线观看| 欧美大片日本大片免费观看| 亚洲手机成人高清视频| 美国欧美日韩国产在线播放| 国产精品国产三级国产普通话99 | 91一区一区三区| 91精品国产91热久久久做人人| 久久久亚洲精华液精华液精华液 | 久久精品网站免费观看| 亚洲最快最全在线视频| 国内精品久久久久影院色| 91小视频免费看| 亚洲精品一区二区三区在线观看| 亚洲男女一区二区三区| 久久精品久久99精品久久| 99国产精品久久| 久久综合九色综合欧美就去吻 | 在线观看91精品国产入口| 欧美videos中文字幕| 一区二区免费在线播放| 国产精品一区专区| 3d动漫精品啪啪一区二区竹菊| 国产精品素人一区二区| 久久99精品久久久久久国产越南| 色婷婷激情久久| 国产精品三级视频| 国产在线精品不卡| 在线成人免费观看| 亚洲精品乱码久久久久久日本蜜臀| 精品一区二区在线免费观看| 欧美在线免费视屏| 久久免费看少妇高潮| 国产成人夜色高潮福利影视| 欧美一区二区三区四区在线观看| 国产精品美日韩| 国产精品亚洲专一区二区三区| 日韩欧美在线观看一区二区三区| 亚洲第四色夜色| 欧美三级三级三级爽爽爽| 一区二区三区在线观看国产| 成人国产一区二区三区精品| 亚洲国产精品av| www.欧美日韩| 国产精品麻豆一区二区| 国产91丝袜在线播放九色| 日韩三级精品电影久久久| 国产精品一区二区黑丝| 国产一区二区三区观看| 国产成人免费xxxxxxxx| 久久久久久久久99精品| 亚洲欧美福利一区二区| 韩国理伦片一区二区三区在线播放| 欧洲精品视频在线观看| 亚洲精品日产精品乱码不卡| 日韩一区二区三区免费看 |