www.pudn.com > ctc-matlab.rar > ctcenc.m, change:2005-03-21,size:620b


function [code,FinalState]=ctcenc(data,InitialState)
%ctc子编码器,完成对一个序列的编码需要两次调用此函数,因此一个ctc码块需要4次调用此函数,两次编原始信息,两次编交织信息
%第一次调用InitialState设为[0 0 0],第二次的InitialState的值需要在CtcEncoder里查找表格确定
%首先将输入信息交替分成AB两路
A=data(1:2:end);
B=data(2:2:end);
code=zeros(1,length(A));
%初始化寄存器
d0=InitialState(1);
d1=InitialState(2);
d2=InitialState(3);
%编码
for i=1:length(A)
    code(i)=mod(A(i)+B(i)+d0+d1,2);
    temp=mod(A(i)+B(i)+d0+d2,2);
    d2=mod(d1+B(i),2);
    d1=mod(d0+B(i),2);
    d0=temp;
end
%返回编码器终止状态
FinalState=[d0,d1,d2];