% [nstates,ninput,trellis_trans,trellis_out] = trellis_par34(nstates,H) % Returns trellis description of the systematic convolutional code described % by the parity matrix H, where the number of states is % nstates. The algorithm applies to codes of rate 3/4. % % George Ginis, June 2001 function [nstates,ninput,trellis_transition,trellis_output] = trellis_par34(nstates,H) ninput=3; % convert octal description to binary description m=log2(nstates); Hbin=par_binconv(H,m); % observer canonical form is assumed for s=0:2^m-1, % iterate for each possible state for in=0:2^ninput-1, % iterate for each possible input sm=dec2binm(s,m+1); % convert state to binary description inm=dec2binm(in,ninput); % convert input to binary description % compute parity bit output % v_0=s_1+v_3*h_{1,0}+v_2*h_{2,0}+v_1*h_{3,0} v0=sm(1)+... inm(3)*Hbin(1,1)+inm(2)*Hbin(1,(m+1)+1)+inm(1)*Hbin(1,(m+1)*2+1); v0=mod(v0,2); for st_index=1:m % update all states sm_new(st_index) = ... Hbin(1,(m+1)*3+1+st_index)*v0+... inm(3)*Hbin(1,1+st_index)+inm(2)*Hbin(1,(m+1)+1+st_index)+... inm(1)*Hbin(1,2*(m+1)+1+st_index)+... sm(st_index+1); sm_new(st_index)=mod(sm_new(st_index),2); end snew=binm2dec(sm_new); % new state in decimal form out=2*in+v0; % corresponding output in decimal form trellis_transition(s+1,in+1)=snew+1; trellis_output(s+1,in+1)=out; end end