www.pudn.com > tryGUI.rar > cnv_encd.m


function output=cnv_encd(g,k0,input) 
%g 生成矩阵 
%k0 一次输入的个数 
%input 输入的信源数值,用1和0的数组表示 
%cnv_encd(g,k0,input) 
%G g line n0,?k0 
%G ?g n*L(li)*k 
%line g1,g2... 
%k0 bit/T s 
%input 0/1 bit 
%------------------------------ 
% g: generating matrix 
% k0: the number of inputing every time 
% input:  data of input 
%--------------------------------- 
%+ 0..0,因为一次输入k0个比特 
if rem(length(input),k0)>0 
   input=[input,zeros(size(1:k0-rem(length(input),k0)))]; 
end 
n=length(input)/k0; 
 
%g size 
if rem(size(g,2),k0)>0 
   error('Error,g is not of the right size.') 
end 
 
%li ?L,n0 
li=size(g,2)/k0;                  %%ji cun qi ge shu ,dang qian shu ru de ye zai ji cun qi li ,zhe li shi 7 
n0=size(g,1);                     %% 既是每次输出的个数 
 
%+ 0..0 
u=[zeros(size(1:(li-1)*k0)),input,zeros(size(1:li*k0))]; 
 
%uu lie i*T,i=1,2... 
u1=u(li*k0:-1:1); 
for i=1:n+li-1                             %% 原来是 i=1:n+li-2 
   u1=[u1,u((i+li)*k0:-1:i*k0+1)]; 
end 
uu=reshape(u1,li*k0,n+li);               %% 原来是 reshape(u1,li*k0,n+li-1),每列代表寄存器的状态 
 
%output ?rename 
% 原来是 output=reshape(rem(g*uu,2),1,n0*(n+li-1)); 
output=reshape(rem(g*uu,2),1,n0*(n+li));