📄 kernel1.m
字号:
function [k] = kernel1(a,b,ker,arg)% function [k] = kernel(a,b,ker,arg)%% KERNEL computes a dot product of the point a and b after% non-linear mapping of these point. The non-linear mapping% is determined a argument ker.%% Input:% a [DxN] N points of dimension D.% b [DxM] M points of domension D.% ker [string] is given kernel% 'linear' - no argument,% 'quad' - no argument,% 'poly' - arg(1) is degree of polynomial,% 'rbf' - arg(1) is sigma,% 'sigmoid' - arg(1) is scale, arg(2) is offset,% 'fourier' - arg(1) is degree,% 'spline' - no argument.% arg [1xP] P arguments of the given kernel.% % Output:% k [NxM] dot (kernel) product or kernel matrix.%% Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac% (c) Czech Technical University Prague, http://cmp.felk.cvut.cz% Written Vojtech Franc (diploma thesis)% Modifications% 14-Nov-2001, V.Franc, returned argument bias removed% 10-apr-2001 V.Franc, fourier, spline and quad (as defined in SH10) % kernel added% 22-mar-2001 V.Franc, bias indicator added% 26-feb-2001 V.Francn1=size(a,2);n2=size(b,2);if n1 == 1 & n2 == 1, k = kernel1(a,b,ker,arg );else k=zeros(n1,n2); for i=1:n1, for j=1:n2, k(i,j)=kernel1(a(:,i),b(:,j),ker,arg ); end endendreturn; %------------------------------------------------------function [k] = kernel1(a,b,ker,arg );switch lower(ker) case 'linear' k = a'*b; case 'poly' k = (a'*b + 1)^arg(1); case 'quad' k = (a'*b)^2 + a'*b + 1; case 'rbf' k = exp(-(a-b)'*(a-b)/(2*arg(1)^2)); case 'sigmoid' k = tanh(arg(1)*a'*b + arg(2)); case 'fourier' z = sin(arg(1) + 0.5)*2*ones(length(a),1); i = find(a-b); z(i) = sin(arg(1)+0.5)*(a(i)-b(i))./sin((a(i)-b(i))/2); k = prod(z); case 'spline' z = 1 + a.*b + a.*b.*min(a,b)-((a+b)/2).*(min(a,b)).^2+(1/3)*(min(a,b)).^3; k = prod(z);endreturn;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -