收藏 分享(赏)

c语言的BCH码的编译码程序doc.doc

上传人:tangtianxu1 文档编号:2968566 上传时间:2018-10-01 格式:DOC 页数:10 大小:56.50KB
下载 相关 举报
c语言的BCH码的编译码程序doc.doc_第1页
第1页 / 共10页
c语言的BCH码的编译码程序doc.doc_第2页
第2页 / 共10页
c语言的BCH码的编译码程序doc.doc_第3页
第3页 / 共10页
c语言的BCH码的编译码程序doc.doc_第4页
第4页 / 共10页
c语言的BCH码的编译码程序doc.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、BCH 码的编译码程序#include #include #include int m, n, length, k, t, d;int p21;int alpha_to1048576, index_of1048576, g548576;int recd1048576, data1048576, bb548576;int seed;int numerr, errpos1024, decerror = 0;void read_p()int i, ninf;printf(“nEnter a value of m such that the code length isn“);printf(“2*(m

2、-1) - 1 1) | !(mninf) );void generate_gf()register int i, mask;mask = 1;alpha_tom = 0;for (i = 0; i = 1;for (i = m + 1; i = mask)alpha_toi = alpha_tom (alpha_toi - 1 mask) 9) printf(“Computing cycle sets modulo %dn“, n);printf(“(This may take some time).n“);do ii = 0;do ii+;cyclejjii = (cyclejjii -

3、1 * 2) % n;sizejj+;aux = (cyclejjii * 2) % n; while (aux != cyclejj0);ll = 0;do ll+;test = 0;for (ii = 1; (ii 0; jj-)if (gjj != 0)gjj = gjj - 1 alpha_to(index_ofgjj + zerosii) % n;elsegjj = gjj - 1;g0 = alpha_to(index_ofg0 + zerosii) % n;printf(“Generator polynomial:ng(x) = “);for (ii = 0; ii = 0; i

4、-) feedback = datai bblength - k - 1;if (feedback != 0) for (j = length - k - 1; j 0; j-)if (gj != 0)bbj = bbj - 1 feedback;elsebbj = bbj - 1;bb0 = g0 else for (j = length - k - 1; j 0; j-)bbj = bbj - 1;bb0 = 0;void decode_bch()register int i, j, u, q, t2, count = 0, syn_error = 0;int elp10261024, d

5、1026, l1026, u_lu1026, s1025;int root200, loc200, err1024, reg201;t2 = 2 * t;/* first form the syndromes */printf(“S(x) = “);for (i = 1; i 0)q-;if (q 0) j = q;do j-;if (dj != -1) if (lu lq + u - q)lu + 1 = lu;elselu + 1 = lq + u - q;for (i = 0; i 16;encode_bch(); for (i = 0; i length - k; i+)recdi =

6、 bbi;for (i = 0; i k; i+)recdi + length - k = datai;printf(“Code polynomial:nc(x) = “);for (i = 0; i length; i+) printf(“%1d“, recdi);if (i printf(“n“);printf(“Enter the number of errors:n“);scanf(“%d“, printf(“Enter error locations (integers between“);printf(“ 0 and %d): “, length-1);for (i = 0; i

7、numerr; i+)scanf(“%d“, if (numerr)for (i = 0; i numerr; i+)recderrposi = 1;printf(“r(x) = “);for (i = 0; i length; i+) printf(“%1d“, recdi);if (i printf(“n“);decode_bch(); printf(“Results:n“);printf(“original data = “);for (i = 0; i k; i+) printf(“%1d“, datai);if (i printf(“nrecovered data = “);for (i = length - k; i length; i+) printf(“%1d“, recdi);if (i-length+k) printf(“n“);for (i = length - k; i length; i+)if (datai - length + k != recdi)decerror+;if (decerror)printf(“There were %d decoding errors in message positionsn“, decerror);elseprintf(“Succesful decodingn“);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报