| Description of sllda |
sllda
PURPOSE 
SLLDA Trains a Linear Discriminant Model using specified method
SYNOPSIS 
function T = sllda(X, nums, method, varargin)
DESCRIPTION 
CROSS-REFERENCE INFORMATION 
This function calls:
- sldlda SLDLDA Performs Direct Linear Discriminant Analysis
- slfld SLFLD Performs Fisher Linear Discriminant Analysis
- slnlda SLNLDA Performs Nullspace-based Linear Discriminant Analysis
- raise_lackinput RAISE_LACKINPUT Raises an error indicating lack of input argument
- slparseprops SLPARSEPROPS Parses input parameters
This function is called by:
SUBFUNCTIONS 
SOURCE CODE 
0001 function T = sllda(X, nums, method, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065 if nargin < 3
0066 raise_lackinput('sllda', 3);
0067 end
0068
0069 opts.prepca = false;
0070 opts.rvalue = [];
0071 opts.dimset = {'rank'};
0072 opts.Sb = {'Sb'};
0073 opts.Sw = {'Sw'};
0074 opts.weights = [];
0075 opts.pdimset = {};
0076
0077 opts = slparseprops(opts, varargin{:});
0078
0079
0080
0081 switch method
0082 case 'pinv'
0083 whitenopt = {'std', eps};
0084 T = delegate_fld(X, nums, opts, whitenopt);
0085 case 'efm'
0086 r = take_value(opts.rvalue, 1e-5);
0087 whitenopt = {'std', r};
0088 T = delegate_fld(X, nums, opts, whitenopt);
0089 case 'boundev'
0090 r = take_value(opts.rvalue, 1e-3);
0091 whitenopt = {'bound', r};
0092 T = delegate_fld(X, nums, opts, whitenopt);
0093 case 'regdual'
0094 r = take_value(opts.rvalue, 1e-3);
0095 whitenopt = {'reg', r};
0096 T = delegate_fld(X, nums, opts, whitenopt);
0097 case 'pvldual'
0098 r = take_value(opts.rvalue, 2e-3);
0099 whitenopt = {'gapprox', r};
0100 T = delegate_fld(X, nums, opts, whitenopt);
0101 case 'nlda'
0102 T = delegate_nlda(X, nums, opts);
0103 case 'dlda'
0104 T = delegate_dlda(X, nums, opts);
0105 otherwise
0106 error('sltoolbox:invalidarg', ...
0107 'Invalid LDA method %s', method);
0108 end
0109
0110
0111
0112
0113 function T = delegate_fld(X, nums, opts, whitenopt)
0114
0115 ropts.prepca = opts.prepca;
0116 ropts.whiten = {'scheme', 'std', 'evproc', whitenopt};
0117 ropts.dimset = opts.dimset;
0118 ropts.Sb = opts.Sb;
0119 ropts.Sw = opts.Sw;
0120 ropts.weights = opts.weights;
0121
0122 T = slfld(X, nums, ropts);
0123
0124
0125 function T = delegate_nlda(X, nums, opts)
0126
0127 ropts.prepca = opts.prepca;
0128 ropts.pdimset = opts.pdimset;
0129 ropts.dimset = opts.dimset;
0130 ropts.Sb = opts.Sb;
0131 ropts.Sw = opts.Sw;
0132 ropts.weights = opts.weights;
0133
0134 T = slnlda(X, nums, ropts);
0135
0136 function T = delegate_dlda(X, nums, opts)
0137
0138 ropts.pdimset = opts.pdimset;
0139 ropts.Sb = opts.Sb;
0140 ropts.Sw = opts.Sw;
0141 ropts.weights = opts.weights;
0142
0143 T = sldlda(X, nums, ropts);
0144
0145
0146
0147
0148 function v = take_value(v0, defaultv)
0149
0150 if isempty(v0)
0151 v = defaultv;
0152 else
0153 v = v0;
0154 end
0155
Generated on Wed 20-Sep-2006 12:43:11 by m2html © 2003
|
|