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

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

?? bch3121.c.txt

?? 一些糾錯編碼算法的源代碼
?? TXT
字號:
/* * File:    bch3121.c  * Author:  Robert Morelos-Zaragoza * * %%%%%%%%%%% Encoder/Decoder for a (31,21,5) binary BCH code %%%%%%%%%%%%% * *	This code is used in the POCSAG protocol specification for pagers. * *	In this specific case, there is no need to use the Berlekamp-Massey *	algorithm, since the error locator polynomial is of at most degree 2. *	Instead, we simply solve by hand two simultaneous equations to give * 	the coefficients of the error locator polynomial in the case of two  *	errors. In the case of one error, the location is given by the first *	syndrome. * *	This program derivates from the original bch2.c, which was written *	to simulate the encoding/decoding of primitive binary BCH codes. *	Part of this program is adapted from a Reed-Solomon encoder/decoder *	program,  'rs.c', to the binary case.  * *	rs.c by Simon Rockliff, University of Adelaide, 21/9/89  *	bch2.c by Robert Morelos-Zaragoza, University of Hawaii, 5/19/92  * * COPYRIGHT NOTICE: This computer program is free for non-commercial purposes. * You may implement this program for any non-commercial application. You may  * also implement this program for commercial purposes, provided that you * obtain my written permission. Any modification of this program is covered * by this copyright. * * %%%% Copyright 1994 (c) Robert Morelos-Zaragoza. All rights reserved. %%%%% * * m = order of the field GF(2**5) = 5 * n = 2**5 - 1 = 31 = length  * t = 2 = error correcting capability  * d = 2*t + 1 = 5 = designed minimum distance  * k = n - deg(g(x)) = 21 = dimension  * p[] = coefficients of primitive polynomial used to generate GF(2**5) * g[] = coefficients of generator polynomial, g(x) * alpha_to [] = log table of GF(2**5)  * index_of[] = antilog table of GF(2**5) * data[] = coefficients of data polynomial, i(x) * bb[] = coefficients of redundancy polynomial ( x**(10) i(x) ) modulo g(x) * numerr = number of errors  * errpos[] = error positions  * recd[] = coefficients of received polynomial  * decerror = number of decoding errors (in MESSAGE positions)  * */#include <math.h>#include <stdio.h>int             m = 5, n = 31, k = 21, t = 2, d = 5;int				length = 31;int             p[6];		/* irreducible polynomial */int             alpha_to[32], index_of[32], g[11];int             recd[31], data[21], bb[11];int             numerr, errpos[32], decerror = 0;int             seed;void read_p()/* Primitive polynomial of degree 5 */{	register int    i;    p[0] = p[2] = p[5] = 1; p[1] = p[3] = p[4] =0;}void generate_gf()/* * generate GF(2**m) from the irreducible polynomial p(X) in p[0]..p[m] * lookup tables:  index->polynomial form   alpha_to[] contains j=alpha**i; * polynomial form -> index form  index_of[j=alpha**i] = i alpha=2 is the * primitive element of GF(2**m)  */{	register int    i, mask;	mask = 1;	alpha_to[m] = 0;	for (i = 0; i < m; i++) {		alpha_to[i] = mask;		index_of[alpha_to[i]] = i;		if (p[i] != 0)			alpha_to[m] ^= mask;		mask <<= 1;	}	index_of[alpha_to[m]] = m;	mask >>= 1;	for (i = m + 1; i < n; i++) {		if (alpha_to[i - 1] >= mask)		  alpha_to[i] = alpha_to[m] ^ ((alpha_to[i - 1] ^ mask) << 1);		else		  alpha_to[i] = alpha_to[i - 1] << 1;		index_of[alpha_to[i]] = i;	}	index_of[0] = -1;}void gen_poly()/*  * Compute generator polynomial of BCH code of length = 31, redundancy = 10 * (OK, this is not very efficient, but we only do it once, right? :) */{	register int    ii, jj, ll, kaux;	int             test, aux, nocycles, root, noterms, rdncy;	int             cycle[15][6], size[15], min[11], zeros[11];	/* Generate cycle sets modulo 31 */	cycle[0][0] = 0; size[0] = 1;	cycle[1][0] = 1; size[1] = 1;	jj = 1;			/* cycle set index */	do {		/* Generate the jj-th cycle set */		ii = 0;		do {			ii++;			cycle[jj][ii] = (cycle[jj][ii - 1] * 2) % n;			size[jj]++;			aux = (cycle[jj][ii] * 2) % n;		} while (aux != cycle[jj][0]);		/* Next cycle set representative */		ll = 0;		do {			ll++;			test = 0;			for (ii = 1; ((ii <= jj) && (!test)); ii++)				/* Examine previous cycle sets */			  for (kaux = 0; ((kaux < size[ii]) && (!test)); kaux++)					if (ll == cycle[ii][kaux])						test = 1;		} while ((test) && (ll < (n - 1)));		if (!(test)) {			jj++;	/* next cycle set index */			cycle[jj][0] = ll;			size[jj] = 1;		}	} while (ll < (n - 1));	nocycles = jj;		/* number of cycle sets modulo n */	/* Search for roots 1, 2, ..., d-1 in cycle sets */	kaux = 0;	rdncy = 0;	for (ii = 1; ii <= nocycles; ii++) {		min[kaux] = 0;		for (jj = 0; jj < size[ii]; jj++)			for (root = 1; root < d; root++)				if (root == cycle[ii][jj])					min[kaux] = ii;		if (min[kaux]) {			rdncy += size[min[kaux]];			kaux++;		}	}	noterms = kaux;	kaux = 1;	for (ii = 0; ii < noterms; ii++)		for (jj = 0; jj < size[min[ii]]; jj++) {			zeros[kaux] = cycle[min[ii]][jj];			kaux++;		}	printf("This is a (%d, %d, %d) binary BCH code\n", length, k, d);	/* Compute generator polynomial */	g[0] = alpha_to[zeros[1]];	g[1] = 1;		/* g(x) = (X + zeros[1]) initially */	for (ii = 2; ii <= rdncy; ii++) {	  g[ii] = 1;	  for (jj = ii - 1; jj > 0; jj--)	    if (g[jj] != 0)	      g[jj] = g[jj - 1] ^ alpha_to[(index_of[g[jj]] + zeros[ii]) % n];	    else	      g[jj] = g[jj - 1];	  g[0] = alpha_to[(index_of[g[0]] + zeros[ii]) % n];	}	printf("g(x) = ");	for (ii = 0; ii <= rdncy; ii++) {	  printf("%d", g[ii]);	  if (ii && ((ii % 70) == 0))	    printf("\n");	}	printf("\n");}void encode_bch()/*  * Calculate redundant bits bb[], codeword is c(X) = data(X)*X**(n-k)+ bb(X) */{	register int    i, j;	register int    feedback;	for (i = 0; i < length - k; i++)		bb[i] = 0;	for (i = k - 1; i >= 0; i--) {		feedback = data[i] ^ bb[length - k - 1];		if (feedback != 0) {			for (j = length - k - 1; j > 0; j--)				if (g[j] != 0)					bb[j] = bb[j - 1] ^ feedback;				else					bb[j] = bb[j - 1];			bb[0] = g[0] && feedback;		} else {			for (j = length - k - 1; j > 0; j--)				bb[j] = bb[j - 1];			bb[0] = 0;		};	};};void decode_bch()/* * We do not need the Berlekamp algorithm to decode. * We solve before hand two equations in two variables. */{	register int    i, j, q;	int             elp[3], s[5], s3;	int             count = 0, syn_error = 0;	int             loc[3], err[3], reg[3];	int				aux;	/* first form the syndromes */	printf("s[] = (");	for (i = 1; i <= 4; i++) {		s[i] = 0;		for (j = 0; j < length; j++)			if (recd[j] != 0)				s[i] ^= alpha_to[(i * j) % n];		if (s[i] != 0)			syn_error = 1;	/* set flag if non-zero syndrome */							/* NOTE: If only error detection is needed,							 * then exit the program here...							 */		/* convert syndrome from polynomial form to index form  */		s[i] = index_of[s[i]];		printf("%3d ", s[i]);	};	printf(")\n");	if (syn_error) {	/* If there are errors, try to correct them */		if (s[1] != -1) {			s3 = (s[1] * 3) % n;			if ( s[3] == s3 )  /* Was it a single error ? */				{				printf("One error at %d\n", s[1]);				recd[s[1]] ^= 1;		/* Yes: Correct it */				}			else {				/* Assume two errors occurred and solve								 * for the coefficients of sigma(x), the								 * error locator polynomail								 */                if (s[3] != -1)                  aux = alpha_to[s3] ^ alpha_to[s[3]];                else                  aux = alpha_to[s3];				elp[0] = 0;				elp[1] = (s[2] - index_of[aux] + n) % n;				elp[2] = (s[1] - index_of[aux] + n) % n;				printf("sigma(x) = ");				for (i = 0; i <= 2; i++)					printf("%3d ", elp[i]);				printf("\n");				printf("Roots: ");				/* find roots of the error location polynomial */				for (i = 1; i <= 2; i++)					reg[i] = elp[i];				count = 0;				for (i = 1; i <= n; i++) { /* Chien search */					q = 1;					for (j = 1; j <= 2; j++)						if (reg[j] != -1) {							reg[j] = (reg[j] + j) % n;							q ^= alpha_to[reg[j]];						}					if (!q) {	/* store error location number indices */						loc[count] = i % n;						count++;						printf("%3d ", (i%n));					}				}				printf("\n");				if (count == 2)					/* no. roots = degree of elp hence 2 errors */					for (i = 0; i < 2; i++)						recd[loc[i]] ^= 1;				else	/* Cannot solve: Error detection */					printf("incomplete decoding\n");				}			}		else if (s[2] != -1) /* Error detection */			printf("incomplete decoding\n");	}}main(){	int             i;	read_p();				/* read generator polynomial g(x) */	generate_gf();			/* generate the Galois Field GF(2**m) */	gen_poly();				/* Compute the generator polynomial of BCH code */	seed = 1;	srandom(seed);	/* Randomly generate DATA */	for (i = 0; i < k; i++)		data[i] = (random() & 67108864) >> 26;	/* ENCODE */	encode_bch();			/* encode data */ 	for (i = 0; i < length - k; i++)		recd[i] = bb[i];	/* first (length-k) bits are redundancy */	for (i = 0; i < k; i++)		recd[i + length - k] = data[i];	/* last k bits are data */	printf("c(x) = ");	for (i = 0; i < length; i++) {		printf("%1d", recd[i]);		if (i && ((i % 70) == 0))			printf("\n");	}	printf("\n");	/* ERRORS */    printf("Enter the number of errors and their positions: ");    scanf("%d", &numerr);	for (i = 0; i < numerr; i++)		{		scanf("%d", &errpos[i]);		recd[errpos[i]] ^= 1;		}	printf("r(x) = ");	for (i = 0; i < length; i++)		printf("%1d", recd[i]);	printf("\n");    /* DECODE */	decode_bch();	/*	 * print out original and decoded data	 */	printf("Results:\n");	printf("original data  = ");	for (i = 0; i < k; i++)		printf("%1d", data[i]);	printf("\nrecovered data = ");	for (i = length - k; i < length; i++)		printf("%1d", recd[i]);	printf("\n");	/* decoding errors: we compare only the data portion */	for (i = length - k; i < length; i++)		if (data[i - length + k] != recd[i])			decerror++;	if (decerror)		printf("%d message decoding errors\n", decerror);	else		printf("Succesful decoding\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看日韩毛片| 国产色产综合色产在线视频| 久久久.com| 午夜精品在线看| 成人深夜视频在线观看| 91精品国产高清一区二区三区蜜臀 | av一区二区不卡| 日韩欧美另类在线| 亚洲国产aⅴ成人精品无吗| 成人理论电影网| 久久日韩精品一区二区五区| 午夜精品一区二区三区三上悠亚| 不卡的av电影| 久久久久国产精品厨房| 日韩电影在线观看一区| 欧美性生活久久| 亚洲精品v日韩精品| 成人免费黄色在线| 国产日韩欧美亚洲| 国产一区 二区| 日韩欧美在线不卡| 人人爽香蕉精品| 欧美男人的天堂一二区| 亚洲线精品一区二区三区八戒| 91在线码无精品| 国产精品国产三级国产aⅴ中文| 国产成人啪免费观看软件| 欧美电影免费提供在线观看| 免费在线观看日韩欧美| 欧美一区二区视频观看视频| 视频一区国产视频| 在线电影国产精品| 日本vs亚洲vs韩国一区三区二区 | 亚洲视频图片小说| av午夜一区麻豆| 自拍偷拍亚洲激情| 在线一区二区三区| 婷婷开心激情综合| 日韩一区国产二区欧美三区| 久久er99精品| 久久久精品影视| 成人国产精品免费| 一区二区三区四区亚洲| 欧美日韩在线直播| 蜜乳av一区二区| 精品国产123| 成人午夜在线播放| 一区二区三区中文字幕| 欧美男男青年gay1069videost| 日韩精品免费专区| 精品国产免费视频| av在线不卡观看免费观看| 亚洲成人精品影院| 精品国产一区二区三区不卡 | 国产精品一区三区| 亚洲欧洲一区二区三区| 欧美日韩免费观看一区三区| 久久爱另类一区二区小说| 国产精品福利在线播放| 欧美日韩在线三级| 国产精品综合网| 亚洲综合一区在线| 337p粉嫩大胆噜噜噜噜噜91av| www.99精品| 欧美aa在线视频| 中文字幕在线免费不卡| 制服.丝袜.亚洲.中文.综合| 成人免费高清视频在线观看| 亚洲成人在线观看视频| 国产免费成人在线视频| 欧美日韩亚洲另类| 成人免费毛片aaaaa**| 丝袜a∨在线一区二区三区不卡| 久久久久亚洲综合| 欧美日韩一区在线| 成人av在线看| 美腿丝袜亚洲三区| 亚洲精品久久久蜜桃| 久久久蜜桃精品| 91精品欧美久久久久久动漫| 99re66热这里只有精品3直播| 奇米影视在线99精品| 国产精品超碰97尤物18| 精品女同一区二区| 欧美浪妇xxxx高跟鞋交| 97久久人人超碰| 成人在线视频一区二区| 麻豆成人av在线| 亚洲高清免费视频| 亚洲人成影院在线观看| wwwwww.欧美系列| 欧美一级淫片007| 欧美视频自拍偷拍| 91麻豆免费视频| 成人性生交大片免费看中文| 麻豆精品一区二区| 日韩成人伦理电影在线观看| 亚洲精品五月天| 国产精品免费aⅴ片在线观看| 日韩亚洲欧美在线观看| 欧美久久一二区| 欧美亚洲免费在线一区| 色综合天天天天做夜夜夜夜做| 丁香婷婷综合网| 国产精品996| 国产成人综合亚洲91猫咪| 久久99久国产精品黄毛片色诱| 亚洲国产sm捆绑调教视频| 亚洲小说欧美激情另类| 午夜精品一区二区三区免费视频| 一区二区三区在线高清| 一区二区三区在线免费观看| 亚洲乱码中文字幕综合| 亚洲精品国产a| 一二三区精品视频| 亚洲第一成人在线| 午夜欧美2019年伦理| 丝袜脚交一区二区| 久久精品国产精品亚洲综合| 久久成人免费网站| 国产一区三区三区| 国产成人在线视频免费播放| 国产91精品一区二区麻豆亚洲| 国产成人免费视频 | 国产精品系列在线观看| 国产成人av一区二区| 成人影视亚洲图片在线| 97久久精品人人做人人爽| 欧美在线观看视频一区二区 | 亚洲国产精品欧美一二99| 亚洲伊人色欲综合网| 首页国产丝袜综合| 久久69国产一区二区蜜臀| 国产精品中文有码| 91麻豆自制传媒国产之光| 欧美日韩在线精品一区二区三区激情| 欧美一级生活片| 国产日韩三级在线| 亚洲最快最全在线视频| 免费的国产精品| av一区二区三区四区| 欧美男男青年gay1069videost| 久久综合久久鬼色中文字| 亚洲欧洲在线观看av| 三级一区在线视频先锋| 国产精品一级片| 欧美性生活久久| 久久久久久久久久久久电影| 亚洲精品视频在线观看免费| 日本午夜一本久久久综合| 成人污污视频在线观看| 欧美日韩精品一区二区三区四区 | 亚洲第一狼人社区| 亚洲成人午夜影院| 国产老妇另类xxxxx| av电影一区二区| 91精品国产全国免费观看| 国产午夜精品一区二区三区四区| 伊人一区二区三区| 久久er精品视频| 日本韩国欧美一区| 久久你懂得1024| 午夜精品视频一区| 成人一区二区三区中文字幕| 欧美一区二视频| 亚洲日本电影在线| 国产乱码精品一区二区三区忘忧草| 欧美综合亚洲图片综合区| 日韩欧美国产午夜精品| 久久伊人蜜桃av一区二区| 亚洲欧美区自拍先锋| 国模娜娜一区二区三区| 欧美人伦禁忌dvd放荡欲情| 日韩在线a电影| 精品一区二区三区免费| 欧美午夜精品一区二区三区| 欧美国产日韩精品免费观看| 美女久久久精品| 欧美精品777| 一区二区三区免费网站| av在线播放成人| 欧美国产日韩a欧美在线观看| 免费视频最近日韩| 欧美久久一二区| 五月激情综合网| 欧美午夜影院一区| 亚洲一卡二卡三卡四卡无卡久久 | 国产毛片一区二区| 日韩欧美国产小视频| 欧美aaaaaa午夜精品| 欧美肥大bbwbbw高潮| 亚洲图片欧美视频| 91看片淫黄大片一级在线观看| 国产精品网站导航| 国产99久久久国产精品免费看| 亚洲精品一区二区三区99| 麻豆freexxxx性91精品| 日韩精品一区二区三区蜜臀| 极品少妇xxxx偷拍精品少妇| 日韩一区二区电影在线|