blob: f5af8dc5a89229d1d83234afc546c26070bb4d40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
function [ NEXT ] = make_next(SYMBOLS)
%
% MAKE_NEXT:
% This function returns a lookuptable containing a mapping
% between the present state and the legal next states.
% Each row correspond to a state, and the two legal states
% related to state n is located in NEXT(n,1) and in
% NEXT(n,2). States are represented by their related
% numbers.
%
% SYNTAX: [ NEXT ] = make_next(SYMBOLS)
%
% INPUT: SYMBOLS: The table of symbols corresponding the the state-
% numbers.
%
% OUTPUT: NEXT: The transition table describing the legal next
% states asdescribed above.
%
% SUB_FUNC: None
%
% WARNINGS: None
%
% TEST(S): The function has been verified to return the expected
% results.
%
% AUTOR: Jan H. Mikkelsen / Arne Norre Ekstrøm
% EMAIL: hmi@kom.auc.dk / aneks@kom.auc.dk
%
% $Id: make_next.m,v 1.3 1997/09/22 08:13:29 aneks Exp $
% FIRST WE NEED TO FIND THE NUMBER OF LOOPS WE SHOULD RUN.
% THIS EQUALS THE NUMBER OF SYMBOLS. ALSO MAXSUM IS NEEDED FOR
% LATER OPERATIONS.
%
[ states , maxsum ]=size(SYMBOLS);
search_matrix=SYMBOLS(:,2:maxsum);
maxsum=maxsum-1;
% LOOP OVER THE SYMBOLS.
%
for this_state=1:states,
search_vector=SYMBOLS(this_state,1:maxsum);
k=0;
for search=1:states,
if (sum(search_matrix(search,:)==search_vector)==maxsum)
k=k+1;
NEXT(this_state,k)=search;
if k > 2,
error('Error: identified too many next states');
end
end
end
end
|