📄 yxcsvmkernel.m
字号:
function K = yxcSVMkernel(a, b, kernel, sigma)
% SVM Kernel function
%
% Author: Xuchen Yao. yaoxuchen@gmail.com
%
% Input:
% a and b each has n1/n2 points, every point is described by dim1/dim2 vectors
% a: n1 x dim1 data
% b: n2 x dim2 data
% kernel: kernel type('linear', 'poly', 'rbf')
% sigma: see Algorithm
%
% Output:
% K: n1 x n2 matrix, of the following kernel function
%
% Algorithm:
% Linear Kernel: K = a * b', sigmal can be empty.
% Ploy Kernel: K = (a * b' + 1).^sigma
% RBF Kernel: K = exp(- || a - b' ||^2 / sigma^2)
[n1, dim1] = size(a);
[n2, dim2] = size(b);
if dim1 ~= dim2
error('columns of a and b must agree');
end
switch kernel
case 'linear'
K = a*b';
case 'poly'
K = (a * b' + 1).^sigma;
case 'rbf'
[N1, d] = size(a);
[N2, d] = size(b);
dist2 = repmat(sum((a.^2)', 1), [N2 1])' + ...
repmat(sum((b.^2)',1), [N1 1]) - 2*a*(b');
K = exp(-dist2/(sigma^2));
otherwise
error('kernel type must be specified.');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -