• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Matlab
  • 标签:

资源简介

循环码编码与解码,并用MATLAB对其实现。

资源截图

代码片段和文件信息

clc
clear all
n=input(‘请输入循环码的码长 n=‘); 
k=input(‘请输入循环码的信息码长 k=‘); 
gx=zeros(kn);G=zeros(kn);H=zeros(n-kn); 
g=input(‘请输入生成多项式的系数ab…  次数由高到低如:[1 0 1] \n‘); 
%产生生成矩阵gx 
for m=1:k 
   gx(mm: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); 
data
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(1k*length(data)/n); 
pr=eye(nk); 
a=0;c=0;d=0; 
for m=1:length(data)/n; 
   if rem(data(1n*(m-1)+1:n*m)*H‘2)==zeros(1n-k) 
     decode(1k*(m-1)+1:k*m)=data(1n*(m-1)+1:n*(m-1)+k); 
   else  
     a=1; 
   end 
   if a==1 
     for b=1:n
        if rem(data(1n*(m-1)+1:n*m)*H‘2)==H(:b)‘ 
           decode(1k*(m-1)+1:k*m)=rem(data(1n*(m-1)+1:n*(m-1)+k)+pr(b:)2); 
           c=1; 
           break; 
        end 
     end 
   end 
   if a==1&&c==0 
      decode(1k*(m-1)+1:k*m)=2*eye(1k); 
   end 
end 
for m=1:length(decode) 
   if decode(m)==2 
      disp(‘收到的该序列误码太多,无法纠错‘) 
      d=1; 
      break; 
   end 
end 
if d==0 
   decode 
end 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        398  2006-08-02 10:37  Untitled.m

     文件       1406  2011-12-02 07:31  cyclic_decode.m

     文件        879  2011-12-04 09:29  cyclic_encode.m

----------- ---------  ---------- -----  ----

                 2683                    3


评论

共有 条评论

相关资源