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

📄 kernel.m

📁 支持向量机的一个训练软件
💻 M
字号:
function H = kernel(ker,x1,x2,par)
% Function that computes the kernel matrix.
%
%  H = kernel(ker,x1,x2,par)
%
%  Parameters:
%
%              ker: kernel type. String.
%                  'linear'  - Linear kernel
%                  'poly_h'  - Homegenious polynomial kernel. par is degree of polynomial. 
%                  'poly_i'  - Inhomogenious polynomial kernel. par is degree of polynomial.
%                  'rbf'     - RBF kernel. par is width of rbfs (sigma).
%
%              x1: matrix of input vectors. Each row of x1 represents a d-dimensional vector.
%              x2: matrix of input vectors. Each row of x2 represents a d-dimensional vector.
%              par: parameter of the kernel.
%
%  Outputs:   
%
%              H: Matrix of dimension size(x1,1)*size(x2,1) and in each entry (H)i,j we have the kernel of x1(i,:) with x2(j,:).
%
% Author:   Fernando Perez-Cruz (fernandop@ieee.org)
% Version:  1.0
% Date:     18th March 2002.
%
%

  if (nargin < 3) % check correct number of arguments
     help kernel
  else

    % could check for correct number of args in here
    % but will slow things down further
    switch lower(ker)
    case 'linear'
       H = x1*x2';
    case 'poly_h'
       H = (x1*x2').^par;       
    case 'poly_i'
       H = (x1*x2' +1).^par;       
    case 'rbf'
       if(size(x1,2)==1)
          N1=size(x1,1);
          N2=size(x2,1);
          H = zeros(N1,N2);
          for i=1:N1
             H(i,:) = (exp(-(x2-ones(N2,1)*x1(i,:))'.*(x2-ones(N2,1)*x1(i,:))'/(2*par^2)));
          end
       else
          N1=size(x1,1);
          N2=size(x2,1);
          H = zeros(N1,N2);
          for i=1:N1
             H(i,:) = exp(-sum((x2-ones(N2,1)*x1(i,:))'.*(x2-ones(N2,1)*x1(i,:))')/(2*par^2));
          end
       end 
    otherwise
       H = x1*x2';
    end        
 end

⌨️ 快捷键说明

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