www.gusucode.com > 《MATLAB智能算法30个案例》分析源代码 > 《MATLAB智能算法30个案例》分析源代码/code/chapter30/elmtrain.m
function [IW,B,LW,TF,TYPE] = elmtrain(P,T,N,TF,TYPE) % ELMTRAIN Create and Train a Extreme Learning Machine % Syntax % [IW,B,LW,TF,TYPE] = elmtrain(P,T,N,TF,TYPE) % Description % Input % P - Input Matrix of Training Set (R*Q) % T - Output Matrix of Training Set (S*Q) % N - Number of Hidden Neurons (default = Q) % TF - Transfer Function: % 'sig' for Sigmoidal function (default) % 'sin' for Sine function % 'hardlim' for Hardlim function % TYPE - Regression (0,default) or Classification (1) % Output % IW - Input Weight Matrix (N*R) % B - Bias Matrix (N*1) % LW - Layer Weight Matrix (N*S) % Example % Regression: % [IW,B,LW,TF,TYPE] = elmtrain(P,T,20,'sig',0) % Y = elmtrain(P,IW,B,LW,TF,TYPE) % Classification % [IW,B,LW,TF,TYPE] = elmtrain(P,T,20,'sig',1) % Y = elmtrain(P,IW,B,LW,TF,TYPE) % See also ELMPREDICT % Yu Lei,11-7-2010 % Copyright www.matlabsky.com % $Revision:1.0 $ if nargin < 2 error('ELM:Arguments','Not enough input arguments.'); end if nargin < 3 N = size(P,2); end if nargin < 4 TF = 'sig'; end if nargin < 5 TYPE = 0; end if size(P,2) ~= size(T,2) error('ELM:Arguments','The columns of P and T must be same.'); end [R,Q] = size(P); if TYPE == 1 T = ind2vec(T); end [S,Q] = size(T); % Randomly Generate the Input Weight Matrix IW = rand(N,R) * 2 - 1; % Randomly Generate the Bias Matrix B = rand(N,1); BiasMatrix = repmat(B,1,Q); % Calculate the Layer Output Matrix H tempH = IW * P + BiasMatrix; switch TF case 'sig' H = 1 ./ (1 + exp(-tempH)); case 'sin' H = sin(tempH); case 'hardlim' H = hardlim(tempH); end % Calculate the Output Weight Matrix LW = pinv(H') * T';