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

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

?? ofdm_receiver.c.bak

?? ofdm的完整系統模型,包含信道參數,多徑模型,doppler頻移等都可以自由修改!是您做仿真的有力幫助.c語言運行速度快!
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
	Complex	factor_matrix[poly_g+1][PILOT_LENGTH];
	double	recov_matrix[sub_clk_size][poly_g+1];
	double	tmp_v;
	FILE	*fp;
	mst_method = 2;
	pow_t = 0;
	enta_1 = 1.0e-3;

	/* caculate each tap's avarage power */
	for (j = 0; j < PILOT_LENGTH; j++) {
	
		tap_power[j] = 0;
		for (i = 0; i < repeat_M; i++) {
			tap_power[j] = tap_power[j] + pilot_rev[j+i*inter_K*PILOT_LENGTH].real * pilot_rev[j+i*inter_K*PILOT_LENGTH].real + pilot_rev[j+i*inter_K*PILOT_LENGTH].imag * pilot_rev[j+i*inter_K*PILOT_LENGTH].imag;
		}
		tap_power[j] = tap_power[j] / repeat_M;
		pow_t = pow_t + tap_power[j];
	}
	
	if (mst_method == 1) {

		/* MST search according to avarage power */
		thresh_v = pow_t * enta_1;
		tap_count = 0;
		for (j = 0; j < PILOT_LENGTH; j++) {
			if (tap_power[j] >= thresh_v) {
	
				tap_idx[tap_count] = j;
				tap_count++;

				for (i = 0; i < repeat_M; i++) {
					pilot_proc1[j+i*inter_K*PILOT_LENGTH] = pilot_rev[j+i*inter_K*PILOT_LENGTH];
				}
			}
			else {
				for (i = 0; i < repeat_M; i++) {
					pilot_proc1[j+i*inter_K*PILOT_LENGTH].real = 0;
					pilot_proc1[j+i*inter_K*PILOT_LENGTH].imag = 0;
	
					pilot_proc2[j+i*inter_K*PILOT_LENGTH].real = 0;
					pilot_proc2[j+i*inter_K*PILOT_LENGTH].imag = 0;
				}
			}
		}
		
		/* search for max point */
		max_idx = tap_idx[0];
		max_value = tap_power[max_idx];
		for (j = 1; j < tap_count; j++) {
			if (tap_power[tap_idx[j]] > max_value) {
				max_idx = tap_idx[j];
				max_value = tap_power[max_idx];
			}
		}		
	}
	else {
		
		/* MST search according to tap number */
		tap_count = MST_TAP_LEN;
		
		/* search for most significant taps */
		pow_s = 0;
		for (j = 0; j < tap_count; j++) {
	
			max_idx = 0;
			max_value = tap_power[max_idx];
			for (i = 1; i < PILOT_LENGTH; i++) { 
				if (tap_power[i] > max_value) {
					max_value = tap_power[i];
					max_idx = i;
				}
			}
			pow_s = pow_s + tap_power[max_idx];		// signal power
			tap_idx[j] = max_idx;
			tap_power[max_idx] = 0;
		}
		max_idx = tap_idx[0];

		/* zero force at none MST */
		for (j = 0; j < PILOT_LENGTH; j++) {
			
			for (i = 0; i < repeat_M; i++) {
				pilot_proc1[j+i*inter_K*PILOT_LENGTH].real = 0;
				pilot_proc1[j+i*inter_K*PILOT_LENGTH].imag = 0;
				
				pilot_proc2[j+i*inter_K*PILOT_LENGTH].real = 0;
				pilot_proc2[j+i*inter_K*PILOT_LENGTH].imag = 0;
			}
		}
		
		for (j = 0; j < tap_count; j++) {
			
			for (i = 0; i < repeat_M; i++) {
				pilot_proc1[tap_idx[j]+i*inter_K*PILOT_LENGTH] = pilot_rev[tap_idx[j]+i*inter_K*PILOT_LENGTH];
			}
		}
	}
	
	for (tmp_i = 0; tmp_i < repeat_M; tmp_i++ ){
		for (tmp_j = 1; tmp_j < inter_K-1; tmp_j++){
			for (tmp_k = 0; tmp_k < PILOT_LENGTH; tmp_k++){
				pilot_proc1[tmp_k+tmp_i*inter_K*PILOT_LENGTH+tmp_j*PILOT_LENGTH] = pilot_proc1[tmp_k+tmp_i*inter_K*PILOT_LENGTH];
			}
		}
	}

	/* polymial algorithm*/

	fp	= fopen(matrix_file,"r");
	for (tmp_i = 0; tmp_i < poly_g+1;tmp_i++){
		for (tmp_j = 0; tmp_j < repeat_M;tmp_j++){
			if (!feof(fp)){
				fscanf(fp,"%d",&tmp_v);
				multi_matrix[tmp_i][tmp_j] = tmp_v;
			}
		}
	}
	fclose(fp);
//	for (tmp_i = 0; tmp_i < poly_g+1;tmp_i++){
//		for (tmp_j = 0; tmp_j < tap_count;tmp_j++){
//			tmp_real = 0;
//			tmp_imag = 0;
//			for (tmp_k = 0; tmp_k < repeat_M; tmp_k++){
//				tmp_real = tmp_real + multi_matrix[tmp_i][tmp_k]*pilot_proc1[tmp_k*inter_K*PILOT_LENGTH+tap_idx[tmp_j]].real;
//				tmp_imag = tmp_imag + multi_matrix[tmp_i][tmp_k]*pilot_proc1[tmp_k*inter_K*PILOT_LENGTH+tap_idx[tmp_j]].imag;
//			}
//			factor_matrix[tmp_i][tmp_j].real = tmp_real;
//			factor_matrix[tmp_i][tmp_j].imag = tmp_imag;
//		}
//	}
///*	for (tmp_j = 0; tmp_j < poly_g+1;tmp_j++){
//		if (tmp_j == 0){
//			recov_matrix[0][tmp_j] = 1;
//		}
//		else{
//			recov_matrix[0][tmp_j] = 0;
//		}
//	}
//	*/
//	for (tmp_i = 0; tmp_i < sub_clk_size;tmp_i++){
//		tmp_v = 1;
//		for (tmp_j = 0; tmp_j < poly_g+1;tmp_j++){
//			recov_matrix[tmp_i][tmp_j] = tmp_v;
//			tmp_v = tmp_v*tmp_i;
//		}
//	}
//
//	for (tmp_i = 0; tmp_i < sub_clk_size;tmp_i++){
//		for (tmp_j = 0; tmp_j < tap_count; tmp_j++){
//			tmp_real = 0;
//			tmp_imag = 0;
//			for (tmp_k = 0; tmp_k < poly_g+1; tmp_k++){
//				tmp_real = tmp_real + recov_matrix[tmp_i][tmp_k]*factor_matrix[tmp_k][tmp_j].real;
//				tmp_imag = tmp_imag + recov_matrix[tmp_i][tmp_k]*factor_matrix[tmp_k][tmp_j].imag;
//			}
//			pilot_proc2[tap_idx[tmp_j]+tmp_i*inter_K*PILOT_LENGTH].real = tmp_real;
//			pilot_proc2[tap_idx[tmp_j]+tmp_i*inter_K*PILOT_LENGTH].imag = tmp_imag;
//		}
//	}
//	/* log each tap's avarage power to file 
//	{
//		FILE *log_fp;
//		
//		log_fp = fopen(LOG_TAP_STP2, "a+");
//		
//		fprintf(log_fp, "%d\n", win_len);
//
//		fclose(log_fp);
//	}*/
}
/*function : MST + polynomial algorithm*/
void	channel_poly(pilot_rev, pilot_proc1, pilot_proc2)
Complex *pilot_rev;
Complex *pilot_proc1;
Complex *pilot_proc2;
{
	int	i,j,k;
	int	poi_ind;
	Complex sub_blk_plt_rev[sub_clk_size][PILOT_LENGTH];
	Complex sub_blk_plt_tar1[sub_clk_size][PILOT_LENGTH];
	Complex sub_blk_plt_tar2[sub_clk_size][PILOT_LENGTH];
	int	sub_blk_num;
	sub_blk_num = floor(1024/sub_clk_size);
	for (i = 0 ;i < sub_blk_num; i++){
		if ( (1024 - sub_clk_size*i) >= sub_clk_size ){
			poi_ind = i*sub_clk_size;
		}
		else{
			poi_ind = 1024 - sub_clk_size;
		}
		for (j = 0; j < sub_clk_size ; j++){
			for (k = 0; k < PILOT_LENGTH ; k ++){
				sub_blk_plt_rev[j][k].real = pilot_rev[poi_ind*PILOT_LENGTH+j*PILOT_LENGTH+k].real;
				sub_blk_plt_rev[j][k].imag = pilot_rev[poi_ind*PILOT_LENGTH+j*PILOT_LENGTH+k].imag;
			}
		}
		sub_esti_poly(sub_blk_plt_rev[0],sub_blk_plt_tar1[0],sub_blk_plt_tar2[0]);
		for (j = 0; j < sub_clk_size ; j++){
			for (k = 0; k < PILOT_LENGTH ; k ++){
				pilot_proc1[poi_ind*PILOT_LENGTH+j*PILOT_LENGTH+k].real=sub_blk_plt_tar1[j][k].real;
				pilot_proc1[poi_ind*PILOT_LENGTH+j*PILOT_LENGTH+k].imag=sub_blk_plt_tar1[j][k].imag;
				pilot_proc2[poi_ind*PILOT_LENGTH+j*PILOT_LENGTH+k].real=sub_blk_plt_tar2[j][k].real;
				pilot_proc2[poi_ind*PILOT_LENGTH+j*PILOT_LENGTH+k].imag=sub_blk_plt_tar2[j][k].imag;
			}
		}
	}
}
/* function : caculate mse */
void mse_caculate(pilot_true, pilot_proc, mse, index)
Complex *pilot_true;
Complex *pilot_proc;
double	* mse;
int	index;
{
	int i;
	double impuls_mse;
	Complex abs_erros;

	impuls_mse = 0;
	for (i = 0; i < PILOT_LENGTH; i++) {

		abs_erros = c_sub(pilot_true[i], pilot_proc[i]);
		impuls_mse = impuls_mse + abs_erros.real * abs_erros.real + abs_erros.imag * abs_erros.imag;
	}
//	impuls_mse = impuls_mse / PILOT_LENGTH;

	mse[index] = impuls_mse;

}



/* function : channel equalize */
void chn_equalize(pilot_proc, data_org, data_rev, ber, index)
Complex *pilot_proc;
Complex *data_org;
Complex *data_rev;
double	* ber;
int	index;
{
	int i, j, d_idx, nelem, p_dist, error_count;
	Complex fre_shift, w_tmp;
	double bas_phase, regbit1, regbit2;

	Complex dat_chn[DATA_SUBC_LEN];
	Complex data_tmp[DATA_SUBC_LEN];

	double 	xreal[SUBCARRIERS], ximag[SUBCARRIERS], 
			yreal[SUBCARRIERS], yimag[SUBCARRIERS];
	double  bit_rev[MODULATE_ORDER*DATA_SUBC_LEN],
			bit_org[MODULATE_ORDER*DATA_SUBC_LEN];

	bas_phase = PI2 * PILOT_PHASE / SUBCARRIERS;

	/* frequency shift cause by pilot insert phase */
	for (i = 0; i < PILOT_LENGTH; i++) {

		fre_shift.real = cos(i*bas_phase);
		fre_shift.imag = sin(i*bas_phase);

		w_tmp = c_mul(pilot_proc[i], fre_shift);
		xreal[i] = w_tmp.real;
		ximag[i] = w_tmp.imag;
	}
	
	/* zeros pad */
	for (i = PILOT_LENGTH; i < SUBCARRIERS; i++) {
		xreal[i] = 0;
		ximag[i] = 0;
	}

	/* transform into frequency domain */
	fft(SUBCARRIERS, xreal, ximag, yreal, yimag);
	
	/* extract frequency response at data position */
	d_idx = 0;
	for (i = 0; i < SUBCARRIERS; i++) {
		if ((i-PILOT_PHASE) % PILOT_GAP !=  0) {

			if (i >= FREQ_GUARD_LEN && i < (SUBCARRIERS-FREQ_GUARD_LEN)) {

				dat_chn[d_idx].real = yreal[i];
				dat_chn[d_idx].imag = yimag[i];
				d_idx++;
			}
		}
	}

	/* correct the reveived data */
	for (i = 0; i < DATA_SUBC_LEN; i++) { 
		data_tmp[i] = c_dvd(data_rev[i], dat_chn[i]);
	}

	/* demap received data */
	nelem = MODULATE_ORDER/2;
	p_dist = 2;
	for (i = 0; i < DATA_SUBC_LEN; i++) { 

		regbit1 = data_tmp[i].imag;
		regbit2 = data_tmp[i].real;
		for (j = 0; j < nelem; j++) {
			bit_rev[MODULATE_ORDER*i+j] = (regbit1>=0)? 1:0;
			bit_rev[MODULATE_ORDER*i+j+nelem] = (regbit2>=0)? 1:0;

			regbit1 = fabs(regbit1) - (nelem-j-1)*p_dist;
			regbit2 = fabs(regbit2) - (nelem-j-1)*p_dist;
		}
	}

	/* demap orignal data */
	nelem = MODULATE_ORDER/2;
	p_dist = 2;
	for (i = 0; i < DATA_SUBC_LEN; i++) { 

		regbit1 = data_org[i].imag;
		regbit2 = data_org[i].real;
		for (j = 0; j < nelem; j++) {
			bit_org[MODULATE_ORDER*i+j] = (regbit1>=0)? 1:0;
			bit_org[MODULATE_ORDER*i+j+nelem] = (regbit2>=0)? 1:0;

			regbit1 = fabs(regbit1) - (nelem-j-1)*p_dist;
			regbit2 = fabs(regbit2) - (nelem-j-1)*p_dist;
		}
	}

	/* ber count */
	error_count = 0;
	for (i = 0; i < MODULATE_ORDER*DATA_SUBC_LEN; i++) { 

		if (bit_org[i] != bit_rev[i]) {
			error_count++;
		}
	}
	ber[index] = error_count/TOTAL_BIT_PER_SYM;
}

/*function average the input number*/
void	average_func(in, out, average_num, index)
double * in;
double * out; 
int average_num;
int index;
{
	int	i;
	double	tmp_v = 0;
	for (i = 0; i < average_num; i++){
		tmp_v = tmp_v + in[i];
	}
	out[index] = tmp_v/average_num;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女免费视频一区| 国产一区视频网站| 欧美激情综合五月色丁香| 国产精品无码永久免费888| 亚洲综合丝袜美腿| 久久精品国产网站| 成人性生交大片免费| 91高清视频免费看| 国产午夜精品福利| 亚洲午夜久久久久| 国产精品一区二区三区四区| 欧美丝袜丝交足nylons| 国产日韩一级二级三级| 亚洲成a人v欧美综合天堂下载 | 亚洲午夜激情av| 午夜精品久久久久久久久久久| 日韩av在线发布| 99麻豆久久久国产精品免费| 欧美一级搡bbbb搡bbbb| 亚洲综合无码一区二区| 国产91精品露脸国语对白| 91麻豆精品国产自产在线观看一区| 中日韩av电影| 久久爱www久久做| 欧美日韩一区二区三区高清| 国产精品久久久久久久久果冻传媒 | 亚洲国产成人av网| 成人av资源站| www欧美成人18+| 奇米精品一区二区三区四区| 欧洲亚洲精品在线| 日韩一区日韩二区| 国产成a人亚洲| 久久久精品免费观看| 久久精品国产亚洲一区二区三区| 欧美亚洲愉拍一区二区| 中文字幕av不卡| 国产一区二区免费视频| 欧美电影在线免费观看| 亚洲欧美日韩精品久久久久| 大桥未久av一区二区三区中文| 精品日韩av一区二区| 美女一区二区视频| 91麻豆精品国产无毒不卡在线观看| 亚洲国产精品久久久久秋霞影院 | 亚洲欧洲成人精品av97| 成人午夜免费av| 国产精品对白交换视频| 99v久久综合狠狠综合久久| 国产精品色眯眯| 成人夜色视频网站在线观看| 国产日本欧美一区二区| 捆绑紧缚一区二区三区视频| 精品不卡在线视频| 精品一区二区成人精品| 精品国产一区a| 国产在线视频一区二区三区| 精品国产精品一区二区夜夜嗨| 国产一区欧美二区| 日本一区免费视频| 99久久综合狠狠综合久久| 亚洲精品日日夜夜| 欧美日韩国产大片| 狠狠色狠狠色综合| 亚洲国产精品二十页| 91丨九色丨尤物| 亚洲成人激情自拍| 欧美mv日韩mv国产| 国产98色在线|日韩| 精品亚洲成a人在线观看| 久久久国际精品| 91亚洲大成网污www| 一区二区三区免费| 91福利国产精品| 亚洲妇女屁股眼交7| 91麻豆精品国产| 国产成人av电影在线播放| 综合久久国产九一剧情麻豆| 欧美午夜影院一区| 美女视频黄免费的久久| 国产精品嫩草久久久久| 欧美乱妇一区二区三区不卡视频| 久久精品99国产精品日本| 日韩美女精品在线| 91精品国产综合久久精品 | 香蕉av福利精品导航 | 一本大道久久精品懂色aⅴ| 五月天亚洲精品| 国产欧美精品一区二区色综合| av中文字幕在线不卡| 三级亚洲高清视频| 中文字幕中文字幕一区二区| 在线成人免费视频| 不卡av电影在线播放| 日韩电影在线一区二区三区| 久久久亚洲精华液精华液精华液 | 日韩成人av影视| 国产精品久久三| 精品乱人伦小说| 欧美高清一级片在线| 岛国精品一区二区| 久久精品国产在热久久| 国产精品福利一区二区三区| 欧美一级午夜免费电影| 91社区在线播放| 国产福利精品一区| 激情偷乱视频一区二区三区| 亚洲二区在线视频| 亚洲美女电影在线| 国产精品你懂的在线| 久久精品亚洲麻豆av一区二区 | 亚洲国产精品成人综合色在线婷婷| 欧美日韩国产精品成人| 91搞黄在线观看| 色老头久久综合| 99久久99久久免费精品蜜臀| 激情欧美一区二区三区在线观看| 亚洲一区二区三区四区在线观看 | 国产精品高潮久久久久无| 欧美女孩性生活视频| 色婷婷激情综合| 一本色道久久综合精品竹菊| 国产精品一二三四区| 国产麻豆精品95视频| 久久精品国产精品青草| 日本三级韩国三级欧美三级| 亚洲成人av一区| 丝袜美腿一区二区三区| 亚洲线精品一区二区三区 | 亚洲一区中文日韩| 综合自拍亚洲综合图不卡区| 久久久精品国产免费观看同学| 亚洲一区在线观看网站| 午夜视频在线观看一区二区三区| 一区二区三区欧美| 亚洲五月六月丁香激情| 亚洲第一成人在线| 日韩av电影天堂| 老司机精品视频导航| 狠狠网亚洲精品| 成人免费av在线| av不卡一区二区三区| av影院午夜一区| www.欧美日韩国产在线| 日本精品免费观看高清观看| 在线观看日韩高清av| 欧美日韩五月天| 精品国产三级电影在线观看| 国产欧美一区二区精品忘忧草| 国产精品久久久久久久久免费丝袜| 亚洲精品在线免费播放| 精品国产凹凸成av人网站| 久久久久久久久久久电影| 久久影视一区二区| 一区在线中文字幕| 午夜精品福利一区二区三区蜜桃| 久久99蜜桃精品| 91在线丨porny丨国产| 欧美日韩视频第一区| 久久久久久99久久久精品网站| 国产精品高潮呻吟| 日本在线不卡视频| 国产成人a级片| 欧美日韩免费电影| 国产嫩草影院久久久久| 亚洲视频狠狠干| 不卡的电影网站| 国产成人免费在线观看不卡| 欧美日韩高清一区二区不卡| 国产欧美视频一区二区三区| 日韩精品五月天| 91搞黄在线观看| 成人免费在线观看入口| 国产在线播放一区三区四| 欧美日韩国产色站一区二区三区| 中文字幕在线播放不卡一区| 狠狠色丁香婷婷综合| 91精品国产综合久久久久久漫画| 国产精品国产三级国产普通话99| 久久精品国产秦先生| 777欧美精品| 亚洲第一福利一区| 91国产免费看| 亚洲欧美一区二区三区久本道91| 成人一级黄色片| 国产欧美视频一区二区三区| 国产精一品亚洲二区在线视频| 日韩免费看的电影| 免费成人在线网站| 日韩美女一区二区三区| 日韩成人av影视| 日韩欧美在线网站| 日本欧美久久久久免费播放网| 正在播放一区二区| 麻豆免费精品视频| 日韩午夜中文字幕| 国产在线精品一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区在线不卡| 国产精品久线在线观看|