亚洲欧美第一页_禁久久精品乱码_粉嫩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			"TurboMap.txt"
#define PROGRAM_NAME		"TURBO MAP"
#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;
	double	ch_rely;
	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);
		ch_rely = 2 / noise_var;
		
		/* 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, ch_rely, 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一区二区三区免费野_久草精品视频
精品系列免费在线观看| 国产欧美日韩在线| 99re66热这里只有精品3直播| 免费精品视频最新在线| 天堂一区二区在线免费观看| 亚洲综合区在线| 日韩理论片在线| 亚洲激情校园春色| 亚洲成在人线在线播放| 午夜国产不卡在线观看视频| 日韩专区中文字幕一区二区| 免费人成精品欧美精品| 激情久久五月天| 国产精品一二三四区| 不卡的看片网站| 色噜噜久久综合| 欧美群妇大交群中文字幕| 91麻豆精品国产自产在线| 日韩片之四级片| 国产午夜精品一区二区| 亚洲视频免费观看| 日韩在线观看一区二区| 狠狠色丁香九九婷婷综合五月| 国产黑丝在线一区二区三区| 不卡高清视频专区| 制服丝袜成人动漫| 国产三级一区二区| 亚洲成人一区二区在线观看| 极品尤物av久久免费看| www.久久久久久久久| 91.com在线观看| 欧美激情在线一区二区| 午夜国产精品一区| 风间由美一区二区三区在线观看| 91蜜桃传媒精品久久久一区二区| 制服丝袜亚洲色图| 综合在线观看色| 免费av成人在线| 91麻豆视频网站| 日韩免费观看高清完整版 | 蜜臀av性久久久久av蜜臀妖精| 国内精品国产成人国产三级粉色| 91免费观看视频| 精品少妇一区二区三区在线播放| 亚洲欧美日韩国产手机在线 | 欧美一区二区三区婷婷月色 | 国产精品久久久久久亚洲毛片 | 国产精品正在播放| 欧美视频完全免费看| 久久久久久久性| 亚洲福利视频三区| 91在线视频播放地址| 2020国产精品| 日韩国产欧美在线视频| 在线观看亚洲精品视频| 欧美高清在线视频| 国产麻豆成人精品| 欧美大胆人体bbbb| 日韩成人精品在线观看| 欧美午夜片在线观看| 中文字幕在线观看一区| 国产精品亚洲а∨天堂免在线| 日韩一级片网址| 日一区二区三区| 欧美日韩国产一级片| 亚洲视频一区在线| 99麻豆久久久国产精品免费 | 免费人成在线不卡| 欧美精品久久久久久久久老牛影院 | 99热这里都是精品| 国产视频911| 高清在线成人网| 国产精品麻豆视频| 成人黄色免费短视频| 国产精品全国免费观看高清 | 一区二区高清免费观看影视大全| 成人美女在线观看| 国产精品久久久久影视| www.久久精品| 亚洲乱码国产乱码精品精的特点 | 国产主播一区二区三区| 日韩欧美在线不卡| 精品影视av免费| 精品第一国产综合精品aⅴ| 精品一区二区三区av| 久久久久久日产精品| 国产一区二区三区免费播放| 久久久久久久久97黄色工厂| 国产成人免费在线| 亚洲欧美日韩成人高清在线一区| 色老综合老女人久久久| 天涯成人国产亚洲精品一区av| 欧美一区二区三区四区久久| 久久黄色级2电影| 欧美激情在线看| 欧洲精品中文字幕| 蜜臀av一级做a爰片久久| 久久毛片高清国产| 波多野结衣视频一区| 亚洲国产精品尤物yw在线观看| 欧美一级生活片| 国产成人丝袜美腿| 亚洲国产一区二区三区青草影视| 91精品国产综合久久国产大片| 国产在线乱码一区二区三区| 亚洲欧洲成人精品av97| 欧美日韩国产一级| 国产夫妻精品视频| 午夜精品久久久久久久99水蜜桃| 26uuu国产日韩综合| 91久久国产最好的精华液| 美国十次综合导航| 亚洲三级久久久| 精品国产一区二区三区av性色 | 久久精品噜噜噜成人88aⅴ| 国产欧美日韩在线观看| 欧美日韩亚洲高清一区二区| 国产成人在线色| 日本亚洲三级在线| 亚洲欧洲综合另类| 久久午夜羞羞影院免费观看| 色屁屁一区二区| 国产大陆亚洲精品国产| 青草国产精品久久久久久| 1024亚洲合集| 久久精品一区蜜桃臀影院| 欧美久久久久久久久| 色综合久久综合中文综合网| 国产精品一区二区免费不卡| 天天色图综合网| 亚洲乱码日产精品bd| 欧美经典三级视频一区二区三区| 欧美一区二区美女| 欧美日韩一区国产| 91麻豆视频网站| 99久久婷婷国产| 丁香六月综合激情| 国产精品一区二区免费不卡| 免费精品视频在线| 男女男精品网站| 青青草原综合久久大伊人精品优势 | 中文字幕av一区 二区| 日韩欧美中文字幕一区| 欧美日本免费一区二区三区| 91免费精品国自产拍在线不卡| 成人综合在线网站| 成人免费毛片嘿嘿连载视频| 国产在线看一区| 国产福利一区二区三区在线视频| 国产一区二区三区国产| 久久国产视频网| 蓝色福利精品导航| 韩日欧美一区二区三区| 韩日精品视频一区| 国产又黄又大久久| 风间由美性色一区二区三区| 国产福利一区在线| 99视频一区二区三区| 色综合久久88色综合天天6| 色综合一区二区| 欧美视频在线不卡| 欧美一区二区三区人| 欧美电视剧在线观看完整版| 337p粉嫩大胆色噜噜噜噜亚洲| 精品国产一区二区三区av性色| 久久蜜臀精品av| 综合中文字幕亚洲| 亚洲超碰精品一区二区| 日韩精品免费视频人成| 国产在线精品免费| caoporen国产精品视频| 欧美性xxxxxxxx| 欧美哺乳videos| 国产人成亚洲第一网站在线播放| 亚洲欧洲日本在线| 婷婷成人激情在线网| 精品一区二区在线播放| av在线不卡免费看| 欧美一区二区黄| 国产精品美女久久久久久久久| 一区二区在线看| 精品中文av资源站在线观看| jlzzjlzz欧美大全| 欧美一区二区三区不卡| 国产午夜精品一区二区| 亚洲一区二区三区四区在线免费观看 | 美女被吸乳得到大胸91| 懂色av中文字幕一区二区三区| 日本精品一区二区三区高清| 日韩一区二区在线播放| 中文字幕中文字幕在线一区 | 捆绑紧缚一区二区三区视频| 国产不卡免费视频| 69堂国产成人免费视频| 中文字幕av一区二区三区高| 日韩av中文字幕一区二区| 99久久精品免费| 精品久久人人做人人爽| 洋洋成人永久网站入口| 国产一区二区三区观看|