DataMatrix编码3——生成纠错码RS编码 rs编码和纠错算法
设C(x)为数据码,
E(x)为纠错码字,G(x)为生成多项式,则:
由RS检验码生成多项式的一般形式为:,则有:
X分别取值,得到方程组:
然后用通过高斯消除法计算出E(x)={75 145 5546 20 95 253 237 62 111},最终生成18位码字{66 67 68 69 70 142 129 56 75 14555 46 20 95 253 237 62 111}。
算法如下:
int GfAdd(int a, int b){
return a ^ b;
}
//a * b
int GfMult(int a, int b){
return (a == 0 || b == 0) ? 0: alphaTo[(expOf[a] + expOf[b]) % nn];
}
// a * alpha^b
int GfMult2(int a, int b){
return a== 0 ? 0 :alphaTo[(expOf[a] + b) % nn];
}
// a/b
int GfDiv(int a, int b) {
if( a==0)return 0;
if( a==b)return 1;
returnexpOf[a] > expOf[b] ?
alphaTo[expOf[a] - expOf[b] ] : alphaTo[ nn + expOf[a] - expOf[b] ] ;
}
void gaussion(){
int total =18;
int data =8;
int error =10;
int* codes =new int[total];
int* errors= new int[error];
int* polys =new int[error*error];
int i, j, k,d;
codes[0] =66;
codes[1] =67;
codes[2] =68;
codes[3] =69;
codes[4] =70;
codes[5] =142;
codes[6] =129;
codes[7] =56;
for(i=0;i<error;i++ ){
//sum of each polynomial
int sum = 0;
for( j=0;j<data;j++ )
sum = GfAdd( sum, GfMult2( codes[j], (total-1-j)*(i+1) ) );
errors[i] = sum;
//polynomial matrix
int index = i*error;
for( j=0;j<error;j++ )
polys[index+j] = alphaTo[j*(i+1)];
}
//gaussionelimination
for(i=0;i<error;i++ ){
//diagonal postion
d = i*error+i;
int diagonal = polys[d];
//diagonal --> 1
int index = i*error;
for( j=0;j<error;j++ )
polys[index+j] = GfDiv( polys[index+j], diagonal );
errors[i] = GfDiv( errors[i], diagonal );
//otherrows - thisrow
for( k=0;k<error;k++ ){
if( k!=i ){//another row
int index2 = k*error;
int coefficient = polys[index2+i];
//each column( polynomial[k] = polynomial[k] -polynomial[i]*coefficient )
for( int m=0;m<error;m++ ){
polys[index2+m] = GfAdd( polys[index2+m], GfMult(coefficient,polys[index+m]) );
}
errors[k] =GfAdd( errors[k], GfMult(coefficient, errors[i]));
}
}
}
//errors--> codes
for(j=data++,i=error-1;i>=0;i-- )
codes[j++] = errors[i];
}
更多阅读
霍夫曼编码及解码算法 霍夫曼编码 贪心算法
Code:#include<iostream>#include<string>using namespace std;typedef struct{int weight;int parent,lchild,rchild;}HFNode;void Select(HFNode *HT,int n,int &s1,int&s2){//在前n个数组中,选择parent为
日本作曲家喜多郎《敦煌》丝绸之路3 专辑之《敦煌》和《道》 喜多郎 丝绸之路专辑
世界音乐中的中国:日本作曲家喜多郎《敦煌》(Tunhuang)即《丝绸之路3》专辑与主题曲《敦煌》和《道》(Tao)张鸣雨1983年,喜多郎又发行了《敦煌》(Tunhuang)即《丝绸之路3》专辑。这部专辑共有9首作品,其中的《风神》、《海市蜃楼》和《自
怎样区别第1、2、3代水床? i5 2代和3代的区别
怎样区别第1、2、3代水床?主要是从水床内胎材质上进行区别,第一代水床内胎是以棉布经橡胶硫化处理后制成的。其优点是原材料成本低,生产设备少,生产工艺简单,缺点是:1.只能用它制“地垄沟”全水结
分布式信源编码——原理、算法及应用 分布式计算原理与应用
本书知识全面、深浅适宜,很适合信号处理、图像处理等领域的学生和研究人员参考阅读。书名:分布式信源编码——原理、算法及应用作者:刘荣科定价:49出版日期:2011-09内容简介:本书深入系统地阐述了分布式信源编码的基本原理,介绍
无尽之剑3修改无限金币教程 无尽之剑1无限金币
无尽之剑3修改无限金币教程——简介根据Epic Game官方发布的消息《无尽之剑3》将于9月18日发布,售价6.99美元。新iPhone 5S,iPhone 5C连同iPhone 5, iPhone 4S, iPhone 4, iPad 4, iPad 3, iPad 2, iPad mini, iPod touch 5和iPod tou