仿真(7,4)Hamming码的编码及硬判决译码过程。
作者:互联网
仿真(7,4)Hamming码的编码及硬判决译码过程。
%仿真(7,4)Hamming码的编码及硬判决译码过程
clear all
N = 10; %信息比特行数
n = 7; %Hamming码组长度n=2^m-1
m = 3; %监督位长度
[H,G] = hammgen(m); %产生一个(n,n-m)Hamming码的校验矩阵和生成矩阵
x = randi([0,1],N,n-m); %产生比特数据
y = mod(x*G,2); %Hamming编码
y1 = mod(y+randerr(N,n),2); %在每一个编码码组中引入一个随机比特错误
mat1 = eye(n); %生成n*n的单位矩阵,其中每一行的1代表错误比特位置
errvec = mat1*H'; %校验结果对应的所有错误矢量
y2 = mod(y1*H',2); %译码
%根据译码结果对应的错误矢量找出错误比特位置,并纠错
for index = 1:N
for index1 = 1:n
if(y2(index,:) == errvec(index1,:))
y1(index,:) = mod(y1(index,:)+mat1(index1,:),2);
end
end
end
x_dec = y1(:,m+1:end); %恢复原始信息比特
s = find(x ~= x_dec) %纠错后的信息比特与原始信息比特对比
具体理论与分析:
https://blog.csdn.net/qq_43520653/article/details/111407766
标签:仿真,index,end,比特,译码,Hamming,y1 来源: https://blog.csdn.net/qq_43520653/article/details/111461175