亚洲欧美第一页_禁久久精品乱码_粉嫩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			"TurboLog.txt"
#define PROGRAM_NAME		"TURBO LOG"
#define SIM_MODE			"AWGN"

#define PACKET_SIZE			1024
#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一区二区三区免费野_久草精品视频
99re热这里只有精品视频| 日韩欧美你懂的| 在线观看视频一区二区欧美日韩| 国产福利视频一区二区三区| 91丝袜美腿高跟国产极品老师 | 91日韩一区二区三区| 欧美成人在线直播| 亚洲午夜久久久久久久久电影网 | 日韩一卡二卡三卡国产欧美| 一区在线中文字幕| 裸体歌舞表演一区二区| 成人avav影音| 久久香蕉国产线看观看99| 亚洲电影在线播放| 在线视频中文字幕一区二区| 国产精品网站在线播放| 日韩精品高清不卡| 欧美中文字幕一区二区三区 | 亚洲欧美日韩国产一区二区三区| 日本vs亚洲vs韩国一区三区二区| 欧美午夜精品一区二区三区 | 日本人妖一区二区| 91成人看片片| 最近日韩中文字幕| 懂色av噜噜一区二区三区av| 久久这里只有精品视频网| 日韩精品每日更新| 777欧美精品| 天堂午夜影视日韩欧美一区二区| 99精品国产热久久91蜜凸| 国产精品午夜在线| 99久久夜色精品国产网站| 国产欧美一区二区精品秋霞影院| 国模冰冰炮一区二区| 久久久久久麻豆| 激情成人午夜视频| 久久精品一区二区三区不卡牛牛| 国产在线看一区| 欧美激情自拍偷拍| 国产91精品免费| 亚洲国产精华液网站w| 成人性生交大片免费看中文| 欧美国产激情一区二区三区蜜月 | 亚洲国产精品久久艾草纯爱| 色婷婷狠狠综合| 日本大胆欧美人术艺术动态| 欧美日本韩国一区二区三区视频| 日本美女一区二区三区视频| 日韩精品一区二区三区三区免费 | 美女视频一区在线观看| 精品美女一区二区三区| 国产在线国偷精品产拍免费yy| 久久久久久久av麻豆果冻| 国产精品66部| 一区二区三区.www| 91精品国产高清一区二区三区| 日本不卡高清视频| 国产91清纯白嫩初高中在线观看| 在线一区二区三区四区| 亚洲美女区一区| 欧美一区二区视频在线观看2020| 久久国内精品自在自线400部| 精品88久久久久88久久久| 成人免费毛片aaaaa**| 亚洲欧美日韩中文字幕一区二区三区| 欧美老肥妇做.爰bbww视频| 免费欧美高清视频| 亚洲国产精品99久久久久久久久| 色天使色偷偷av一区二区| 五月天视频一区| 国产日本一区二区| 欧美色视频在线| 久久精品久久久精品美女| 欧美激情在线一区二区| 成人黄色一级视频| 国产视频一区二区三区在线观看| 色偷偷久久一区二区三区| 亚洲h在线观看| 精品国内二区三区| 成人深夜福利app| 亚洲第一福利一区| 成人精品亚洲人成在线| 午夜视黄欧洲亚洲| 在线电影一区二区三区| 亚洲日本在线天堂| 欧美一区二视频| 国产一区二区电影| 国产欧美日韩另类一区| 波波电影院一区二区三区| 午夜成人免费视频| 精品日韩在线观看| 欧美日韩视频一区二区| 亚洲色图在线看| 最新日韩在线视频| 日韩亚洲欧美成人一区| 色婷婷av一区二区三区大白胸| 一本色道久久综合亚洲91| 亚洲欧洲99久久| 中文字幕日韩精品一区| 欧美肥大bbwbbw高潮| 欧美性欧美巨大黑白大战| 夜夜操天天操亚洲| 综合久久久久久| 欧美日韩一级二级| 日韩免费高清av| 国产亚洲精品超碰| 亚洲日本在线a| 亚洲va韩国va欧美va| 日韩高清不卡一区二区三区| 国产精品久久午夜夜伦鲁鲁| 国产婷婷色一区二区三区四区 | 国产欧美日韩另类一区| 精品国产一区二区三区av性色| 欧美成人r级一区二区三区| 国产日韩影视精品| 久久综合色之久久综合| 亚洲同性同志一二三专区| 一区二区在线观看免费| 亚洲国产欧美另类丝袜| 九九精品一区二区| 成人激情免费视频| 欧美日韩mp4| 日韩一级精品视频在线观看| 国产精品国产三级国产普通话蜜臀 | 欧美国产日韩精品免费观看| 精品国产不卡一区二区三区| 粉嫩一区二区三区性色av| 亚洲自拍另类综合| 久久国产精品99精品国产| 国产成人综合精品三级| 国产成人一区在线| 蜜臀久久99精品久久久画质超高清 | 亚洲人成电影网站色mp4| 黄色资源网久久资源365| 69堂成人精品免费视频| 亚洲一二三四久久| 一本色道久久综合狠狠躁的推荐 | 日韩和欧美一区二区三区| 欧美日韩免费一区二区三区| 亚洲人妖av一区二区| 91小视频在线免费看| 国产精品天美传媒沈樵| 国产成a人亚洲精| 中文字幕欧美日韩一区| av不卡在线播放| 亚洲精品成人精品456| 日本韩国欧美一区| 亚洲一区二区黄色| 欧美精品电影在线播放| 日本网站在线观看一区二区三区| 91精品福利在线一区二区三区| 人禽交欧美网站| 精品盗摄一区二区三区| 国产精品一区在线| 中文字幕av一区二区三区高| 成人手机在线视频| 亚洲精品国产品国语在线app| 欧美日韩一级二级三级| 免费人成黄页网站在线一区二区| 久久综合九色综合久久久精品综合| www.av亚洲| 亚洲一区二区综合| 日韩你懂的在线播放| 国产高清不卡一区| 亚洲激情欧美激情| 欧美一区二区三区免费在线看| 老汉av免费一区二区三区| 国产婷婷一区二区| 欧美性欧美巨大黑白大战| 蜜臀av一区二区在线免费观看| 久久久久久久久99精品| 一本大道久久a久久精品综合| 午夜天堂影视香蕉久久| 亚洲精品在线一区二区| 91年精品国产| 日韩av电影天堂| 日本一区二区三级电影在线观看| 91麻豆蜜桃一区二区三区| 亚洲aaa精品| 国产欧美日韩在线| 欧美在线播放高清精品| 国产在线日韩欧美| 亚洲线精品一区二区三区八戒| 精品国产免费视频| 色综合天天狠狠| 麻豆精品一区二区| 国产精品污网站| 日韩三级视频在线观看| 97久久超碰国产精品电影| 青青草97国产精品免费观看无弹窗版| 国产精品视频一二| 欧美一区二区视频网站| 99久久精品免费| 老司机精品视频线观看86 | 久久精品这里都是精品| 欧美日韩国产bt| 成人av在线播放网站| 男男gaygay亚洲| 亚洲特黄一级片| 精品国产伦一区二区三区观看体验 |