⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsrbf.m

📁 matlab中进行人脸识别研究时用到的所有程序码路径的设置.
💻 M
字号:
function red_model = rsrbf(model,options)% RSRBF Redused Set Method for RBF kernel expansion.%% Synopsis:%  red_model = rsrbf(model)%  red_model = rsrbf(model,options)%% Description:%  red_model = rsrbf(model) searchs for a kernel expansion%    with nsv vectors which best approximates the input %    expansion given in model [Schol98a]. The Radial Basis %    kernel (RBF) is assumed (see 'help kernel').%    %  red_model = rsrbf(model,options) allows to specify the %    control paramaters.%% Input:%  model [struct] Kernel expansion:%   .Alpha [nsv x 1] Weight vector.%   .sv.X [dim x nsv] Vectors defining the expansion.%   .options.ker [string] Must be equal to 'rbf'.%   .options.arg [1x1] Kernel argument (see 'help kernel').% %  options [struct] Control parameters:%   .nsv [1x1] Desired number of vectors in the reduced %     expansion (default round(length(model.Alpha)/2)).%   .eps [1x1] Desier limit on the norm of difference between %     the original  normal vector and the reduced the normal %     vector in the  feature space. The algorithm is stopped %     when a lower  difference is achived (default 1e-6).%   .preimage [string] Function called to solve the RBF pre-image %     problem (default 'rbfpreimg');%   .verb [1x1] If 1 then progress info is display (default 0).% % Output:%  red_model [struct] Reduced kernel expansion.%% Example:%  trn = load('riply_trn');%  model = smo(trn,struct('ker','rbf','arg',1,'C',10));%  red_model = rsrbf(model,struct('nsv',10));%  figure; ppatterns(trn);%  h1 = pboundary(model,struct('line_style','r'));%  h2 = pboundary(red_model,struct('line_style','b'));%  legend([h1(1) h2(1)],'Original SVM','Reduced SVM');%% See also %  RBFPREIMG.%% About: Statistical Pattern Recognition Toolbox% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac% <a href="http://www.cvut.cz">Czech Technical University Prague</a>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a>% Modifications:% 11-oct-2004, VF, knorm.m used % 21-sep-2004, VF% 10-jun-2004, VF% 02-dec-2003, VF% process inputs%--------------------------------------------------if nargin < 2, options=[]; else options = c2s(options); endif ~isfield(options,'nsv'), options.nsv = round(length(model.Alpha)/2); endif ~isfield(options,'eps'), options.eps = 1e-6; endif ~isfield(options,'preimage'), options.preimage = 'rbfpreimg2'; endif ~isfield(options,'verb'), options.verb = 0; end% init%--------------------------------------------------Z=[];Beta = [];Alpha = model.Alpha(:);X = model.sv.X;%Const = Alpha'*kernel(X, model.options.ker, model.options.arg )*Alpha;Const = knorm(X,Alpha,model.options.ker,model.options.arg)^2;error = inf;iter = 0;% main loop%--------------------------------------------------while error > options.eps & iter < options.nsv,    iter = iter + 1;  if options.verb,     fprintf('Iteration %d: ', iter);  end    tmp_model.Alpha = Alpha;  tmp_model.sv.X = X;  tmp_model.options = model.options;  if options.verb,      fprintf('computing preimage, ');  end%  Z = [Z, rbfpreimg2(tmp_model)];  Z = [Z, feval( options.preimage,tmp_model)];    Kz = kernel( Z, model.options.ker, model.options.arg );  Kzs = kernel( Z, model.sv.X, model.options.ker, model.options.arg );  Beta = inv( Kz ) * Kzs * model.Alpha(:);    error = Const + Beta'*Kz*Beta - 2*Beta'*Kzs*model.Alpha(:);  if options.verb,      fprintf('||w-w_red||^2 = %f\n', error);  end  Alpha = [model.Alpha(:); -Beta(:)]';  X = [model.sv.X, Z];  endred_model = model;red_model.Alpha = Beta;red_model.sv.X = Z;red_model.nsv = size(Z,2);return;%EOF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -