📄 untitled.m
字号:
M=textread('M1.txt') %从文件中读取信息元序列M
H=textread('H1.txt') %从文件中读取一致校验矩阵H
m=length(H(:,1)) %求解校验位m
k=length(M) %求解信息位数k
n=k+m %求解码长n
%生成发送码字C
G=[eye(k),H(:,[1:k])'] %计算生成矩阵G
C=M*G; %产生码字,该码字为发送码字C
C=mod(C,2) %求模2运算,即变成二进制数
%生成接收码字R
E=randint(1,n) %产生只错一位的随机错误图样E
sum=0;
for i=1:n
sum=sum+E(i)
end
R=xor(C,E); %由发送码字C和错误图样E进行异或运算
R=mod(R,2) %求模2运算,即变成二进制数
%计算伴随式S
S=R*H'; %计算伴随式S,H'为H的转置
S=mod(S,2) %求模2运算,即变成二进制数
%纠错译码,根据伴随式S查找错误图样,然后纠错译码
for i=1:n
if S==H(:,i)' %判断S与H矩阵的哪一列相同
b=zeros(1,n);
b(:,i)=1
X=xor(R,b) %Y为纠错后的码字
end
end
%判断错误位数,并显示相应上的文字说明
if sum==0
fprintf('无错误位,即码字无错\n');
elseif sum==1
fprintf('错一位,纠正后可以得到正确码字\n');
elseif sum>=2
fprintf('错误位大于1,纠错后得到的码字仍不是正确码字\n');
end
%判断纠错后的码字是否仍是许用码字
Y=X*H';
Y=mod(Y,2)
if Y==0
fprintf('该码字仍属于许用码组\n')
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -