📄 xxfzm.m
字号:
%编码程序
m=input('请输入信组 m =') %信息长度为4的整数倍 采用(7 ,4)线性分组码
[r,s]=size(m);
while ((rem(s,4))~=0)
disp('输入错误 请重新输入');
n=input('请输入信组 m =')
[r,s]=size(n);
m=n;
end
g=[ 1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1]; %生成矩阵
h=[1 1 1 0 1 0 0; 1 1 0 1 0 1 0;1 0 1 1 0 0 1]; %译码矩阵
a=s/4;
for i=1:a
P=rem([m(1+(i-1)*4) m(2+(i-1)*4) m(3+(i-1)*4) m(4+(i-1)*4)]*g,2);
for j=1:7
P1((i-1)*7+j)=P(j);
end
end
disp('输入正确 信息组 m='),disp(m);
disp('hamming编码后码字为'),disp(P1);
P1=rem(P1+randerr(1,a*7,[0 1;0.7 0.3]),2); %加入信道噪声
y=P1;
disp('不通过译码为'),disp(y);
%译码程序
[r,s]=size(P1);
a=s/7;
s0=zeros(1,3);
ss=zeros(1,7*a);
e=zeros(1,7);
c=zeros(r,s);
m=zeros(1,4*a);
for i=1:a
s0=rem(([y((i-1)*7+1) y((i-1)*7+2) y((i-1)*7+3) y((i-1)*7+4) y((i-1)*7+5) y((i-1)*7+6) y((i-1)*7+7)]*h'),2);
e=s0/h';
for j=1:7
ss((i-1)*7+j)=e(j);
end
end
c=xor(y,ss);
for k=1:a
m((k-1)*4+1)=c((k-1)*7+1);
m((k-1)*4+2)=c((k-1)*7+2);
m((k-1)*4+3)=c((k-1)*7+3);
m((k-1)*4+4)=c((k-1)*7+4);
end
disp('译码为'),disp(m);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -