-
Notifications
You must be signed in to change notification settings - Fork 17
/
consist.m
87 lines (80 loc) · 2.55 KB
/
consist.m
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
function errstring = consist(model, type, inputs, outputs)
%CONSIST Check that arguments are consistent.
%
% Description
%
% ERRSTRING = CONSIST(NET, TYPE, INPUTS) takes a network data structure
% NET together with a string TYPE containing the correct network type,
% a matrix INPUTS of input vectors and checks that the data structure
% is consistent with the other arguments. An empty string is returned
% if there is no error, otherwise the string contains the relevant
% error message. If the TYPE string is empty, then any type of network
% is allowed.
%
% ERRSTRING = CONSIST(NET, TYPE) takes a network data structure NET
% together with a string TYPE containing the correct network type, and
% checks that the two types match.
%
% ERRSTRING = CONSIST(NET, TYPE, INPUTS, OUTPUTS) also checks that the
% network has the correct number of outputs, and that the number of
% patterns in the INPUTS and OUTPUTS is the same. The fields in NET
% that are used are
% type
% nin
% nout
%
% See also
% MLPFWD
%
% Copyright (c) Ian T Nabney (1996-2001)
% Assume that all is OK as default
errstring = '';
% If type string is not empty
if ~isempty(type)
% First check that model has type field
if ~isfield(model, 'type')
errstring = 'Data structure does not contain type field';
return
end
% Check that model has the correct type
s = model.type;
if ~strcmp(s, type)
errstring = ['Model type ''', s, ''' does not match expected type ''',...
type, ''''];
return
end
end
% If inputs are present, check that they have correct dimension
if nargin > 2
if ~isfield(model, 'nin')
errstring = 'Data structure does not contain nin field';
return
end
data_nin = size(inputs, 2);
if model.nin ~= data_nin
errstring = ['Dimension of inputs ', num2str(data_nin), ...
' does not match number of model inputs ', num2str(model.nin)];
return
end
end
% If outputs are present, check that they have correct dimension
if nargin > 3
if ~isfield(model, 'nout')
errstring = 'Data structure does not conatin nout field';
return
end
data_nout = size(outputs, 2);
if model.nout ~= data_nout
errstring = ['Dimension of outputs ', num2str(data_nout), ...
' does not match number of model outputs ', num2str(model.nout)];
return
end
% Also check that number of data points in inputs and outputs is the same
num_in = size(inputs, 1);
num_out = size(outputs, 1);
if num_in ~= num_out
errstring = ['Number of input patterns ', num2str(num_in), ...
' does not match number of output patterns ', num2str(num_out)];
return
end
end