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

📄 svkernel.asv

📁 支持向量机 这是我的老师编写的matlab源文件 希望对大家有用
💻 ASV
字号:
function k = svkernel(ker,u,v)%SVKERNEL kernel for Support Vector Methods%%  Usage: k = svkernel(ker,u,v)%%  Parameters: ker - kernel type%              u,v - kernel arguments%%  Values for ker: 'linear'  -%                  'poly'    - p1 is degree of polynomial%                  'sa'      - p1 is scale%                  'rbf'     - p1 is width of rbfs (sigma)%                  'sigmoid' - p1 is scale, p2 is offset%                  'spline'  -%                  'bspline' - p1 is degree of bspline%                  'fourier' - p1 is degree%                  'erfb'    - p1 is width of rbfs (sigma)%                  'anova'   - p1 is max order of terms%              %  Author: Zhou Weida (Zhouwd@rsp.xidian.edu.cn)  if (nargin < 1) % check correct number of arguments     help svkernel  else         global p1 p2;    % could check for correct number of args in here    % but will slow things down further    switch lower(ker)      case 'linear'        k = u*v';      case 'poly'         k = (u*v')^p1;      case 'comrbf'         k = exp(-((real(u)-real(v))*(real(u)-real(v))'...            +(imag(u)-imag(v))*(imag(u)-imag(v))')/(2*p1^2));      case 'rbf'         k = exp(-(u-v)*(u-v)'/(2*p1^2));      case 'sa'         if sum(u-v)==0            k=1;         else            k =(sin(p1*sum(u-v)))./(p1*sum(u-v));         end               case '1_wavelet'         k=0;         for i=1:1:4            k=k+cos(1.75*u/(p1*2^(-1*i)))*cos(1.75*v/(p1*2^(-1*i)))*exp(-(u'*u+v'*v)/(2*p1*p1*2^(-2*i)));         end               case 'erbf'        k = exp(-sqrt((u-v)*(u-v)')/(2*p1^2));      case 'sigmoid'         %k = tanh(p1*u*v'/length(u) + p2);         k = tanh(p1*u*v' + p2);      case 'fourier'        z = sin(p1 + 1/2)*2*ones(length(u),1);        i = find(u-v);        z(i) = sin(p1 + 1/2)*(u(i)-v(i))./sin((u(i)-v(i))/2);        k = prod(z);      case 'spline'        z = 1 + u.*v + u.*v.*min(u,v) - ((u+v)/2).*(min(u,v)).^2 + (1/3)*(min(u,v)).^3;        k = prod(z);      case {'curvspline','anova'}        z = 1 + u.*v + (1/2)*u.*v.*min(u,v) - (1/6)*(min(u,v)).^3;        k = prod(z);        case 'gammapdf'            k=1;            if (isempty(u<0) & isempty(v<=0))                for k1=1:length (v)                    alpha=v(1,k1)*v(1,k1)/(p1*p1)-1;                    beta=(p1*p1)/v(1,k1);                    k=k*u(1,k1).^alpha*exp(-u(1,k1)/beta)/(beta.^(alpha+1)*gamma(alpha+1));                end            else                k=0;            end        case 'betapdf'            k=1;            if (isempty(u<=0) & isempty(u>=1) & isempty(v<=0) & isempty(v>=1))                for k1=1:length(v)                    temp=v(1,k1)-v(1,k1)*v(1,k1)-p1*p1                    alpha=v(1,k1)*temp/(p1*p1)-1;                    beta=(1-v(1,k1))*temp/(p1*p1)-1;                    k=k*gamma(                                                        % - sum(u.*v) - 1; %        z = 1 + u.*v + (1/2)*u.*v.*min(u,v) - (1/6)*(min(u,v)).^3;%        k = prod(z); %        z = (1/2)*u.*v.*min(u,v) - (1/6)*(min(u,v)).^3;%        k = prod(z);       case 'bspline'        z = 0;        for r = 0: 2*(p1+1)          z = z + (-1)^r*binomial(2*(p1+1),r)*(max(0,u-v + p1+1 - r)).^(2*p1 + 1);        end        k = prod(z);      case 'anovaspline1'        z = 1 + u.*v + u.*v.*min(u,v) - ((u+v)/2).*(min(u,v)).^2 + (1/3)*(min(u,v)).^3;        k = prod(z);       case 'anovaspline2'        z = 1 + u.*v + (u.*v).^2 + (u.*v).^2.*min(u,v) - u.*v.*(u+v).*(min(u,v)).^2 + (1/3)*(u.^2 + 4*u.*v + v.^2).*(min(u,v)).^3 - (1/2)*(u+v).*(min(u,v)).^4 + (1/5)*(min(u,v)).^5;        k = prod(z);      case 'anovaspline3'        z = 1 + u.*v + (u.*v).^2 + (u.*v).^3 + (u.*v).^3.*min(u,v) - (3/2)*(u.*v).^2.*(u+v).*(min(u,v)).^2 + u.*v.*(u.^2 + 3*u.*v + v.^2).*(min(u,v)).^3 - (1/4)*(u.^3 + 9*u.^2.*v + 9*u.*v.^2 + v.^3).*(min(u,v)).^4 + (3/5)*(u.^2 + 3*u.*v + v.^2).*(min(u,v)).^5 - (1/2)*(u+v).*(min(u,v)).^6 + (1/7)*(min(u,v)).^7;        k = prod(z);      case 'anovabspline'        z = 0;        for r = 0: 2*(p1+1)          z = z + (-1)^r*binomial(2*(p1+1),r)*(max(0,u-v + p1+1 - r)).^(2*p1 + 1);        end        k = prod(1 + z);      otherwise        k = u*v';    end  end

⌨️ 快捷键说明

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