function C = CRC_code_new_n1_mod(M,n,G)
%CRC code (n,k) function,每k个bit编成nbit。
%Input:
% M:(1,x*k) input data
% n:
% G:generating polynomial.(1,n-k+1)
%Output:
% C:(1,n) coded data;
len1=length(G);%len1=n-k+1 已经比n-k大1了。
k=n-len1+1
len2=length(M)
M1=reshape(M,k,len2/k);
C1=zeros(n,len2/k);
C1(1:k,:)=M1;
%t=zeros(n-k+1,1);
%CRC 部分
t=C1(1:n-k+1,:);%8=n-k;eg.n-k+1=9; t为矩阵
GG=[];
for ii=1:len2/k
GG=[GG,t(1,ii).*G];
end
t=mod((t+GG),2);
for jj=n-k+2:n
GG=[];
t=[t(2:n-k+1,:);C1(jj,:)];
for ii=1:len2/k
GG=[GG,t(1,ii).*G];
end
t=mod((t+GG),2);
end
C1(k+1:n,:)=t(2:n-k+1,:);%2-9,共8位
C=reshape(C1,1,n*len2/k);
function [DC,indicate]= CRC_decode_new_n1_mod(C,n,G)
%CRC code (n,k) function,每k个bit编成nbit。%还没有实现纠错。
%Input:
% M:(1,x*n) input data
% n:
% G:generating polynomial.(1,n-k+1)
%Output:
% C:(1,x*k) coded data;
% indicate: CRC indicator,0-correct,>=1-err;
len1=length(G);%len1=n-k+1 **已经比n-k大1了。
k=n-len1+1;
len2=length(C);
M=reshape(C,n,len2/n);
DC=reshape(M(1:k,:),1,k*len2/n);
indicate=zeros(1,len2/n);
%CRC_deco 部分
t=M(1:n-k+1,:);%8=n-k;eg.n-k+1=9; t为矩阵
GG=[];
for ii=1:len2/n
GG=[GG,t(1,ii).*G];
end
t=mod((t+GG),2);
for jj=n-k+2:n
GG=[];
t=[t(2:n-k+1,:);M(jj,:)];
for ii=1:len2/n
GG=[GG,t(1,ii).*G];
end
t=mod((t+GG),2);
end
indicate=sum(t);
D-31