⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled.m

📁 程序可以实现所有的汉明码的要求
💻 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 + -