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

📄 untitled2.m

📁 请大家放心使用
💻 M
字号:
clear
n=input('请输入循环码的码长 n=');
k=input('请输入循环码的信息码长 k=');
gx=zeros(k,n);G=zeros(k,n);H=zeros(n-k,n);
g=input('请输入生成多项式的系数a,b,…  次数由高到低,如:[1 0 1] \n');
%产生生成矩阵gx
for m=1:k
   gx(m,m:n-k+m)=g;
end
%典型生成矩阵G和一致校验矩阵H
h=eye(k)/gx(:,1:k);
gx=h*gx;
G=rem(abs(gx),2)
H=cat(2,(G(:,k+1:end))',eye(n-k))
%解码
fid=fopen('decode.txt');
data=fread(fid);
fclose(fid);
for m=1:length(data)
   if data(m)==49
       data(m)=1;
   elseif data(m)==48
       data(m)=0;
   else disp('存在非法字符')
   end
end
data=data';
if rem(length(data),n)
   disp('序列不符合要求')
end
decode=zeros(1,k*length(data)/n);
pr=eye(n,k);
a=0;c=0;d=0;
for m=1:length(data)/n;
   if rem(data(1,n*(m-1)+1:n*m)*H',2)==zeros(1,n-k)
     decode(1,k*(m-1)+1:k*m)=data(1,n*(m-1)+1:n*(m-1)+k);
   else 
     a=1;
   end
   if a==1
     for b=1:n
        if rem(data(1,n*(m-1)+1:n*m)*H',2)==H(:,b)'
           decode(1,k*(m-1)+1:k*m)=rem(data(1,n*(m-1)+1:n*(m-1)+k)+pr(b,:),2);
           c=1;
           break;
        end
     end
   end
   if a==1&&c==0
      decode(1,k*(m-1)+1:k*m)=2*eye(1,k);
   end
end
for m=1:length(decode)
   if decode(m)==2
      disp('收到的该序列误码太多,无法纠错')
      d=1;
      break;
   end
end
if d==0
   decode
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -