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

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

?? btcencode.c

?? wimax802.16e中的BTC編碼仿真程序
?? C
字號:
/*
*********************************************************************************
* Copyright (c) National Mobile Communications Research Laboratory. 
* All rights reserved.
* 
* FILE NAME : BTCencode.c
* ABSTRUCT:
*	This file is the C file for BTC encoding.
*	
* AUTHOR:	Zhang Tao	2007-02-12
*
*********************************************************************************
*/

/*
*********************************************************************************
*                               INCLUDE FILES
*********************************************************************************
*/

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include "..\..\GlobalDef.h"
#include "..\..\GlobalVar.h"
#include "BTCstruct.h"
#include "BTCinit.h"
/*
*********************************************************************************
*                              Function Definition
*********************************************************************************
*/

/*
*********************************************************************************
* NAME:		Line_Blk_Encode  
* PURPOSE:	perform the liner block codes encoding.
*
* Input:	bit_in[]:  the information bits for encoding.
*			bit_len: the length of the information bits.
*				
* Output:	encode_out[]: the encoded bits.
*					
* AUTHOR: 	Zhang Tao	2007-02-12	
* 
*********************************************************************************
*/
void Line_Blk_Encode(int bit_in[],int bit_len,int encode_out[])
{
	int shift_reg[7] = {0};
	int check_len = 0;//the length of the check bits.
	int feedback = 0;//the feedback of the shift register.
	int index = 0;

	memcpy(encode_out,bit_in,bit_len*sizeof(int));

	switch(bit_len)
	{
	case 11: 
		check_len = 5; 
		for(index=0;index<bit_len;index++)
		{
			feedback = shift_reg[0] ^ bit_in[index];
			shift_reg[0] = shift_reg[1];
			shift_reg[1] = shift_reg[2];
			shift_reg[2] = feedback ^ shift_reg[3];
			shift_reg[3] = feedback;
			shift_reg[4] ^= bit_in[index];
		}
		for(index=0;index<4;index++)
		{
			shift_reg[4] ^= shift_reg[index];
		}
		memcpy((encode_out+bit_len),shift_reg,check_len*sizeof(int));
		break;
	case 26: 
		check_len = 6; 
		for(index=0;index<bit_len;index++)
		{
			feedback = shift_reg[0] ^ bit_in[index];
			shift_reg[0] = shift_reg[1];
			shift_reg[1] = shift_reg[2];
			shift_reg[2] = feedback ^ shift_reg[3];
			shift_reg[3] = shift_reg[4];
			shift_reg[4] = feedback;
			shift_reg[5] ^= bit_in[index];
		}
		for(index=0;index<5;index++)
		{
			shift_reg[5] ^= shift_reg[index];
		}
		memcpy((encode_out+bit_len),shift_reg,check_len*sizeof(int));
		break;
	case 57: 
		check_len = 7; 
		for(index=0;index<bit_len;index++)
		{
			feedback = shift_reg[0] ^ bit_in[index];
			shift_reg[0] = shift_reg[1];
			shift_reg[1] = shift_reg[2];
			shift_reg[2] = shift_reg[3];
			shift_reg[3] = shift_reg[4];
			shift_reg[4] = feedback ^ shift_reg[5];
			shift_reg[5] = feedback;
			shift_reg[6] ^= bit_in[index];
		}
		for(index=0;index<6;index++)
		{
			shift_reg[6] ^= shift_reg[index];
		}
		memcpy((encode_out+bit_len),shift_reg,check_len*sizeof(int));
		break;
	default:
		check_len = 1;
		for(index=0;index<bit_len;index++)
			shift_reg[0] ^= bit_in[index];
		encode_out[bit_len] = shift_reg[0];
	}
}

/*
*********************************************************************************
* NAME:		IntMatrixTrans
* PURPOSE:	perform the transposition of a integer matrix.
*
* Input:	data_in[]:  data input.
*			row : the row number of the matrix.
*			col : the column number of the matrix.
*				
* Output:	data_out[]: data output.
*					
* AUTHOR: 	Zhang Tao	2007-02-12	
* 
*********************************************************************************
*/
void IntMatrixTrans(int data_in[],int row,int col,int data_out[])
{
	int index1;
	int index2;
	int len1 = 0;
	int len2 = 0;

	for(index1=0;index1<row;index1++)
	{
		len2 = 0;
		for(index2=0;index2<col;index2++)
		{
			data_out[index1+len2] = data_in[len1+index2];
			len2 += row;
		}
		len1 += col;
	}
}
/*
*********************************************************************************
* NAME:		oneBTCencode
* PURPOSE:	one BTC block encoding without slot concatenation.
*
* Input:	data_in[]:  the information bits for encoding.
*				
* Output:	data_out[]: one block data output.
*			BTC :  the parameter for BTC.
*					
* AUTHOR: 	Zhang Tao	2007-02-12	
* 
*********************************************************************************
*/
void oneBTCencode(int data_in[],int data_out[],BTCstruct BTC)
{
	int *encode_seq; //the sequence contains message bits and zero bits.
	int *tmp_seq1; //middle sequence for row or column encoding.
	int *tmp_seq2; //middle sequence for row or column encoding.
	int index1,index2;
	int len;
	int i;

	encode_seq = (int *)malloc((BTC.kx * BTC.ky) * sizeof(int));

	//generate the encode sequence.
	memset(encode_seq,0,(BTC.kx * BTC.ky) * sizeof(int));

	//first row of the message.
	index1 = BTC.Iy * BTC.kx + BTC.Ix + BTC.B + BTC.Q;
	len = BTC.kx - BTC.Ix - BTC.B - BTC.Q;
	memcpy((encode_seq+index1),data_in,len*sizeof(int));
	index1 += len + BTC.Ix;
	index2 = len;

	//remaining rows of the message.
	len = BTC.kx - BTC.Ix;
	for(i=BTC.Iy+1;i<BTC.ky;i++)
	{
		memcpy((encode_seq+index1),(data_in+index2),len*sizeof(int));
		index1 += BTC.kx;
		index2 += len;
	}
	
	//row encoding.
	tmp_seq1 = (int *)malloc((BTC.nx * BTC.ny) * sizeof(int));
	index1 = BTC.kx * BTC.Iy;
	index2 = BTC.nx * BTC.Iy;
	memset(tmp_seq1,0,index2 * sizeof(int));	
	for(i=BTC.Iy;i<BTC.ky;i++)
	{
		Line_Blk_Encode((encode_seq+index1),BTC.kx,(tmp_seq1+index2));
		index1 += BTC.kx;
		index2 += BTC.nx;
	}

	//matrix transposition
	tmp_seq2 = (int *)malloc((BTC.nx * BTC.ny) * sizeof(int));
	IntMatrixTrans(tmp_seq1,BTC.ky,BTC.nx,tmp_seq2);

	//column encoding.
	index1 = BTC.ky * BTC.Ix;
	index2 = BTC.ny * BTC.Ix;
	memset(tmp_seq1,0,index2 * sizeof(int));	
	for(i=BTC.Ix;i<BTC.nx;i++)
	{
		Line_Blk_Encode((tmp_seq2+index1),BTC.ky,(tmp_seq1+index2));
		index1 += BTC.ky;
		index2 += BTC.ny;
	}
	
	//matrix transposition
	IntMatrixTrans(tmp_seq1,BTC.nx,BTC.ny,tmp_seq2);

	//output first row
	index1 = BTC.Iy * BTC.nx + BTC.Ix + BTC.B;
	len = BTC.nx - BTC.Ix - BTC.B;
	memcpy(data_out,(tmp_seq2+index1),len*sizeof(int));
	index1 += len + BTC.Ix;
	index2 = len;

	//output remaining rows
	len = BTC.nx - BTC.Ix;
	for(i=BTC.Iy+1;i<BTC.ny;i++)
	{
		memcpy((data_out+index2),(tmp_seq2+index1),len*sizeof(int));
		index1 += BTC.nx;
		index2 += len;
	}

	free(encode_seq);
	free(tmp_seq1);
	free(tmp_seq2);
}

/*
*********************************************************************************
* NAME:		BTCencode
* PURPOSE:	encoding and concatenation of slots.
*
* Input:	data_in[]:  the information data for encoding.
*			nslot: the slot number for the encoded and modulated data.
*			rep: the repetition factor.
*			fec: the struct for the FEC type.
*				
* Output:	data_out[]: the data output.
*					
* AUTHOR: 	Zhang Tao	2007-02-12	
* 
*********************************************************************************
*/
void BTCencode(int data_in[],int nslot,int rep,FEC_TYPE fec,int data_out[])
{
	int n_slot = 0;//n_slot=nslot/rep;
	int cnt_block = 0;
	int para_j = 0;//parameter dependent on the modulation and FEC rate
	int para_k = 0;//floor(n_slot/para_j).
	int para_m = 0;//n_slot modulo para_j.
	int *pdata_in = data_in;
	int *pdata_out = data_out;
	int slot_num = 0;
	BTCstruct BTC; //BTC parameter.
	int encoded_len;
	
	switch(fec.modID)
	{
		case 2:
			if(fec.rateID==1)
				para_j = 6;
			else
				para_j = 4;
			break;
		case 4:
			if(fec.rateID==1)
				para_j = 3;
			else
				para_j = 2;
			break;
		case 6:
			if(fec.rateID==1)
				para_j = 2;
			else if(fec.rateID==2)
				para_j = 1;
			else
				para_j = 1;
			break;
	}


	n_slot = nslot / rep;
	para_k = n_slot / para_j;
	para_m = n_slot % para_j;

	if(n_slot<=para_j)
	{
		encoded_len = n_slot * fec.modID * 48;
		BTCInit(encoded_len,fec.rateID,&BTC);
		oneBTCencode(pdata_in,pdata_out,BTC);
	}
	else if(n_slot>para_j && para_m==0)
	{
		encoded_len = para_j * fec.modID * 48;
		BTCInit(encoded_len,fec.rateID,&BTC);
		for(cnt_block=0;cnt_block<para_k;cnt_block++)
		{
			pdata_in = data_in + cnt_block * BTC.msg_len;
			oneBTCencode(pdata_in,pdata_out,BTC);
			pdata_out += encoded_len;
		}
	}
	else
	{
		encoded_len = para_j * fec.modID * 48;
		BTCInit(encoded_len,fec.rateID,&BTC);
		for(cnt_block=0;cnt_block<para_k-1;cnt_block++)
		{
			pdata_in = data_in + cnt_block * BTC.msg_len;
			oneBTCencode(pdata_in,pdata_out,BTC);
			pdata_out += encoded_len;
		}

		pdata_in += BTC.msg_len;
		slot_num = (para_m+para_j) / 2;
		encoded_len = slot_num * fec.modID * 48;
		BTCInit(encoded_len,fec.rateID,&BTC);
		oneBTCencode(pdata_in,pdata_out,BTC);
		pdata_out += encoded_len;

		pdata_in += BTC.msg_len;
		slot_num = n_slot - para_j*(para_k-1) - (para_m+para_j) / 2;
		encoded_len = slot_num * fec.modID * 48;
		BTCInit(encoded_len,fec.rateID,&BTC);
		oneBTCencode(pdata_in,pdata_out,BTC);		
	}

}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线不卡一区二区| 亚洲国产成人午夜在线一区| 精品国产区一区| 亚洲视频1区2区| 久草热8精品视频在线观看| 91在线精品一区二区| 精品国精品国产| 舔着乳尖日韩一区| 97超碰欧美中文字幕| 国产婷婷一区二区| 久久精品理论片| 欧美亚洲国产一区在线观看网站 | 国产在线不卡一区| 欧美日韩国产免费一区二区 | 97精品国产露脸对白| 26uuu亚洲综合色欧美| 肉色丝袜一区二区| 欧美猛男gaygay网站| 亚洲天堂成人网| 国产精品18久久久久久久久 | 国产精品中文字幕日韩精品 | 国产一区二区三区| 欧美一区二区女人| 麻豆久久久久久久| 日韩区在线观看| 日本亚洲三级在线| 欧美一区二区网站| 免费成人结看片| 日韩一二在线观看| 蜜臀av性久久久久蜜臀av麻豆| 在线电影欧美成精品| 日韩专区一卡二卡| 欧美一区二区三区精品| 秋霞电影一区二区| 精品国产一区二区国模嫣然| 激情综合网av| 中文字幕精品一区二区精品绿巨人| 国产中文字幕一区| 国产精品毛片久久久久久久| 色综合久久综合网97色综合 | 国产精品国产三级国产aⅴ中文 | 欧美日韩国产精品成人| 亚洲成人激情av| 日韩一区二区三区观看| 精品一区二区免费视频| 欧美激情在线免费观看| 99精品久久只有精品| 一区二区成人在线| 欧美一三区三区四区免费在线看| 蜜桃视频免费观看一区| 欧美国产日本视频| 欧美日韩中文精品| 另类欧美日韩国产在线| 国产精品国产馆在线真实露脸| 91在线免费播放| 人人精品人人爱| 国产日韩三级在线| 欧美亚洲高清一区二区三区不卡| 天堂成人免费av电影一区| 久久久久国产免费免费| 91视视频在线观看入口直接观看www | 日韩精品一区二区三区在线观看| 国产精品中文欧美| 亚洲高清不卡在线| 久久久久久久久久久久电影 | 国产精品欧美一区喷水| 欧美性一二三区| 国产一区视频在线看| 一区二区三区在线观看动漫| 欧美xxxx在线观看| 欧美午夜电影网| 成人免费视频免费观看| 亚洲444eee在线观看| 国产精品每日更新| 精品国产乱码久久久久久久| 97久久超碰国产精品| 国产精品自拍网站| 日韩高清在线不卡| 亚洲青青青在线视频| 欧美精品一区二区三区视频| 欧美在线观看一二区| 国产精品99精品久久免费| 亚洲国产aⅴ天堂久久| 欧美国产一区二区| 欧美一区二区久久久| 色女孩综合影院| 丁香网亚洲国际| 另类成人小视频在线| 亚洲成av人综合在线观看| 中文字幕在线一区| 精品日韩一区二区三区免费视频| 在线免费不卡电影| av高清久久久| 国v精品久久久网| 精品系列免费在线观看| 五月激情综合色| 亚洲国产视频在线| 亚洲人成网站色在线观看| 国产精品区一区二区三| 国产无人区一区二区三区| 精品日韩一区二区三区| 日韩你懂的电影在线观看| 337p亚洲精品色噜噜噜| 欧美日韩精品专区| 欧美精品九九99久久| 欧美性色黄大片手机版| 91成人免费网站| 欧日韩精品视频| 日本高清不卡视频| 欧洲av一区二区嗯嗯嗯啊| 欧美天堂亚洲电影院在线播放| 91亚洲精品久久久蜜桃| 色婷婷一区二区| 欧美综合亚洲图片综合区| 色视频欧美一区二区三区| 欧美性受极品xxxx喷水| 欧美日高清视频| 日韩天堂在线观看| 精品欧美一区二区久久| 2023国产精品| 亚洲国产精品成人久久综合一区 | 亚洲不卡一区二区三区| 亚洲成人手机在线| 日韩av一区二区三区四区| 美女性感视频久久| 国产一区二区三区在线观看免费 | 99综合影院在线| 色久优优欧美色久优优| 精品视频在线免费看| 在线观看91精品国产麻豆| 日韩美女一区二区三区四区| ww亚洲ww在线观看国产| 中文字幕欧美日韩一区| 一区二区欧美在线观看| 日韩精品电影一区亚洲| 国产精品影视在线观看| 99riav一区二区三区| 欧美三级视频在线观看| 欧美精品一区二区三| 中文字幕亚洲精品在线观看| 亚洲主播在线播放| 国内精品嫩模私拍在线| 91一区二区在线| 日韩一区二区电影网| 中文字幕的久久| 偷拍一区二区三区| 国产盗摄精品一区二区三区在线 | 精品动漫一区二区三区在线观看 | 欧美成人免费网站| 国产精品久久久久久久久图文区| 亚洲主播在线播放| 国产一区二区三区在线观看精品 | 久久99精品久久久| 91免费版pro下载短视频| 91精品国产手机| 亚洲欧洲99久久| 久久精品国产亚洲5555| 97超碰欧美中文字幕| 精品1区2区在线观看| 一区二区三区日韩欧美精品| 国产原创一区二区| 777xxx欧美| 一区二区三区在线不卡| 国产精品一区二区久久不卡| 欧美精品视频www在线观看 | 欧美高清一级片在线观看| 日韩在线a电影| 91免费看片在线观看| 日本一区二区三区视频视频| 青草国产精品久久久久久| 在线观看视频欧美| 国产女同性恋一区二区| 麻豆91在线播放免费| 欧美日韩综合色| 一区二区欧美国产| 91网站最新地址| 国产精品女同一区二区三区| 精品一区二区三区免费播放| 欧美日本视频在线| 樱花草国产18久久久久| 国产91对白在线观看九色| 精品美女被调教视频大全网站| 香蕉成人伊视频在线观看| 色婷婷综合久久久| 亚洲欧美视频一区| 99国内精品久久| 自拍偷自拍亚洲精品播放| 国产91对白在线观看九色| 国产夜色精品一区二区av| 国模娜娜一区二区三区| 欧美xxxxx裸体时装秀| 免费一区二区视频| 制服丝袜av成人在线看| 午夜精品一区二区三区电影天堂| 91成人免费电影| 亚洲另类中文字| 欧美日韩你懂得| 日本视频中文字幕一区二区三区| 欧美人牲a欧美精品| 热久久国产精品|