信息论课程设计之线性分组码的计算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c = 0 (7)
式中,0代表零阵,它是[1×n] ×[n×(n-k)] = 1×(n-k)全零矢量。式(7)用以检验一个n重矢量是否为码字:若等式成立(得零矢量),该n重必为码字,否则不是码字。
G (8)
这里,0表示一个尺寸为[k ×n] ×[n×(n-k)] = k×(n-k)的零矩阵。
对于生成矩阵符合式(5)的系统码,其校验矩阵也是规则的,必为
G = [ P ] = (5)
这里p是k×(n-k)矩阵; 是k×k单位矩阵,从而保证了矩阵的秩是k。
信息组m乘以系统形式的生成矩阵G后所得的码字,其前k位由单位矩阵 决定,一定与信息组各码元相同,而其余的n-k位是k个信息位的线性组合,叫做冗余位或者一致校验位。这种把信息组原封不动的搬到码字前k位的码叫做系统码,其码字具有如下形式:
C = (1)
这种线性组合特征正是线性分组码名称的来历。研究线性分组码的关键是研究基底、子空间和映射规则,可把码空间与映射的关系化成如图1所示图形。
用 表示第i个基底并写成1 × n矩阵形式
=[ ] (2)
再将k个基底排成k行n列的G矩阵,得
= (3)
对照式(1)可得
C=[ ]= + = mG (4)
C = ( ) =(
反之,不具备“系统”特点的码叫做非系统码。非系统码与系统码并无本质的去北欧,它的生成矩阵通过行运算转变为系统形式,这个过程叫做系统化。系统化不改变码集,只改变映射规则。
由于C的基底和D的基底正交,空间C和空间D也正交,它们互为零空间。因此,(n,k)线性码的任意码字c一定正交于其对偶码的任一码字,也必定正交于校验矩阵H的任意一个行矢量,即
H = (9)
验证H的方法是看其行矢量是否与G的行矢量正交,即式(8)是否成立。此处
G = = [ ] + [ ] = [ ] + [ ] = 0 (10)
式中,两个相同的矩阵模2相加后为全零矩阵。这就说明了H确是校验矩阵。
四、MATLAB源代码
%已知生成矩阵G,可以求出校验矩阵H。
G源自文库[1,0,0,1,1,1;0,1,0,1,1,0;0,0,1,0,1,1];
信息论课程设计
一、所选题目
已知二元(6,3)线性分组码的系统生成矩阵,计算其校验矩阵H、消息与码集的映射关系,并对任意给定的二元6重矢量判断其是否为码字。
二、题目要求
1)计算校验矩阵
2)生成消息组
3)生成码集
4)判断输入的二元6重是否为码字
三、理论分析
线性分组码码空间C是由k个线性无关的基底 , … , 张成的k维n重子空间,码空间的所有元素(即码字)都可以写成k个基底的线性组合,即
fprintf('生成的码集为:C=\n');
disp(C);
r=input('输入码字r:');
if(r*H'==0);
r
fprintf('是码字\n');
else
r
fprintf('不是码字\n');
end;
五、结果截图
式中m = [ ]是1 x k的信息元矩阵, = [ ],i = 0,…,k-1是G中第i行的矢量,也是张成码空间的第i个基底,同时也是码空间元素即码字之一。由于k个基底即G的k个行矢量线性无关,矩阵G的秩一定等于k。当信息元确定之后,码字仅由G矩阵决定,因此称k×n矩阵G为该(n,k)线性分组码的生成矩阵。
基底不是唯一的,生成矩阵也不是唯一的。事实上,将k个基地线性组合后产生令一组k个矢量,只要满足线性无关性的条件,依然可以作为基底张成一个码空间。不同的基底有可能生成同一码集,但因为编码涉及码集和映射两个因素,码集一样儿映射方法不同也不能说是相同的码。
基底的线性组合等效于生成矩阵G的运算,可以产生一组新的基底。利用这点可使生成矩阵具有以下的“系统形式”:
P=[G(1:3,4:6)];
H=[P',eye(3)];
fprintf('效验矩阵为:H=\n');
disp(H);
M=eye(8,3);%消息组矩阵
p=1;
for i=0:1
for j=0:1
for k=0:1
M(p,:)=[i,j, k];
p=p+1;
end
end
end
C=mod((M*G),2);
式中,0代表零阵,它是[1×n] ×[n×(n-k)] = 1×(n-k)全零矢量。式(7)用以检验一个n重矢量是否为码字:若等式成立(得零矢量),该n重必为码字,否则不是码字。
G (8)
这里,0表示一个尺寸为[k ×n] ×[n×(n-k)] = k×(n-k)的零矩阵。
对于生成矩阵符合式(5)的系统码,其校验矩阵也是规则的,必为
G = [ P ] = (5)
这里p是k×(n-k)矩阵; 是k×k单位矩阵,从而保证了矩阵的秩是k。
信息组m乘以系统形式的生成矩阵G后所得的码字,其前k位由单位矩阵 决定,一定与信息组各码元相同,而其余的n-k位是k个信息位的线性组合,叫做冗余位或者一致校验位。这种把信息组原封不动的搬到码字前k位的码叫做系统码,其码字具有如下形式:
C = (1)
这种线性组合特征正是线性分组码名称的来历。研究线性分组码的关键是研究基底、子空间和映射规则,可把码空间与映射的关系化成如图1所示图形。
用 表示第i个基底并写成1 × n矩阵形式
=[ ] (2)
再将k个基底排成k行n列的G矩阵,得
= (3)
对照式(1)可得
C=[ ]= + = mG (4)
C = ( ) =(
反之,不具备“系统”特点的码叫做非系统码。非系统码与系统码并无本质的去北欧,它的生成矩阵通过行运算转变为系统形式,这个过程叫做系统化。系统化不改变码集,只改变映射规则。
由于C的基底和D的基底正交,空间C和空间D也正交,它们互为零空间。因此,(n,k)线性码的任意码字c一定正交于其对偶码的任一码字,也必定正交于校验矩阵H的任意一个行矢量,即
H = (9)
验证H的方法是看其行矢量是否与G的行矢量正交,即式(8)是否成立。此处
G = = [ ] + [ ] = [ ] + [ ] = 0 (10)
式中,两个相同的矩阵模2相加后为全零矩阵。这就说明了H确是校验矩阵。
四、MATLAB源代码
%已知生成矩阵G,可以求出校验矩阵H。
G源自文库[1,0,0,1,1,1;0,1,0,1,1,0;0,0,1,0,1,1];
信息论课程设计
一、所选题目
已知二元(6,3)线性分组码的系统生成矩阵,计算其校验矩阵H、消息与码集的映射关系,并对任意给定的二元6重矢量判断其是否为码字。
二、题目要求
1)计算校验矩阵
2)生成消息组
3)生成码集
4)判断输入的二元6重是否为码字
三、理论分析
线性分组码码空间C是由k个线性无关的基底 , … , 张成的k维n重子空间,码空间的所有元素(即码字)都可以写成k个基底的线性组合,即
fprintf('生成的码集为:C=\n');
disp(C);
r=input('输入码字r:');
if(r*H'==0);
r
fprintf('是码字\n');
else
r
fprintf('不是码字\n');
end;
五、结果截图
式中m = [ ]是1 x k的信息元矩阵, = [ ],i = 0,…,k-1是G中第i行的矢量,也是张成码空间的第i个基底,同时也是码空间元素即码字之一。由于k个基底即G的k个行矢量线性无关,矩阵G的秩一定等于k。当信息元确定之后,码字仅由G矩阵决定,因此称k×n矩阵G为该(n,k)线性分组码的生成矩阵。
基底不是唯一的,生成矩阵也不是唯一的。事实上,将k个基地线性组合后产生令一组k个矢量,只要满足线性无关性的条件,依然可以作为基底张成一个码空间。不同的基底有可能生成同一码集,但因为编码涉及码集和映射两个因素,码集一样儿映射方法不同也不能说是相同的码。
基底的线性组合等效于生成矩阵G的运算,可以产生一组新的基底。利用这点可使生成矩阵具有以下的“系统形式”:
P=[G(1:3,4:6)];
H=[P',eye(3)];
fprintf('效验矩阵为:H=\n');
disp(H);
M=eye(8,3);%消息组矩阵
p=1;
for i=0:1
for j=0:1
for k=0:1
M(p,:)=[i,j, k];
p=p+1;
end
end
end
C=mod((M*G),2);