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