www.pudn.com > CPM4TR.rar > gen_trellis.m


function [state_from_input, state_from, to_state_output, to_state, phase_state] = gen_trellis(m, h, L) 
p = 2/h; 
to_state = zeros(p,m,m,m,L); 
to_state_output = zeros(p,m,m,m); 
state_from = zeros(p,m,m,m,L); 
state_from_input = zeros(p,m,m,m); 
 
phase_state = (1 : p); 
 
for phk = 1:p 
	for ak2 = 1:m 
		for ak1 = 1:m 
			for ak = 1:m 
				phk_new = mod( phk-1 + 2*(ak2-1)-(m-1),p)+1;  
				to_state(phk,ak2,ak1,ak,:) = [phk_new,ak1,ak]; 
				to_state_output(phk,ak2,ak1,ak) = ak - 1; 
			end; 
		end; 
	end; 
end; 
 
for a = 1:p 
for b = 1:m 
for c = 1:m 
		d = 1; 
		for i = 1:p 
		for j = 1:m 
		for k = 1:m 
		for l = 1:m 
			if(reshape(to_state(i,j,k,l,:),1,3) == [a,b,c]) 
				state_from(a,b,c,d,:) = [i,j,k]; 
				state_from_input(a,b,c,d) = l;				 
				d = d + 1; 
			end; 
		end;end;end;end; 
end;end;end; 
			 
 
%p = 2/h; 
%state_num = p * m^(L-1); 
%input_sym_num = m; 
% 
%to_state = zeros(state_num, input_sym_num);     
%to_state_output = zeros(state_num, input_sym_num); 
%phase_state = zeros(state_num, input_sym_num); 
%state_from = zeros(state_num, input_sym_num);               % State transition matrix 
%state_from_input = zeros(state_num, input_sym_num);         % State transition matrix corresponding input 
% 
% 
%for i = 1:state_num 
%    for ak = 1:m 
%        phk = fix((i-1)/(m^2)) + 1; 
%        ak1 = fix( mod(i-1,m^2)/m ) + 1; 
%        ak2 = fix( mod(mod(i-1,m^2),m)) + 1; 
%        phk_new = mod( phk-1 + 2*(ak2-1)-(m-1),p)+1;  
%        to_state(i,ak) = (phk_new-1)*m^2 + (ak-1)*m + ak1; 
%        to_state_output(i,ak) = ak - 1; 
%    end; 
%end; 
% 
%phase_state = (0 : p - 1); 
% 
%for k = 1 : state_num 
%    l = 1; 
%    for i = 1 : state_num 
%        for j = 1 : input_sym_num 
%            if to_state(i, j) == k 
%                state_from(k, l) = i; 
%                state_from_input(k, l) = j - 1; 
%                l = l + 1; 
%            end 
%        end 
%    end 
%end