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

📄 kernelset.m

📁 我用于脑机接口P300拼写范例中的程序
💻 M
字号:
function [K,dist]= kernelset(A,kernelsetoption,oneclassoption,B)

% USAGE
% 
% K= kernelset(A,B,kerneloption,oneclassoption)
%
%
% A cell de matrice
% B cell de matrice
%
%



verbose=0;
samedata=0;
if nargin<4
    B=A;
    samedata=1;
end;
nbA=length(A);
nbB=length(B);
for i=1:nbA
    [xsup{i},alpha{i},rho{i},pos,Ksup{i}]=svmoneclass(A{i},oneclassoption.kernel,oneclassoption.kerneloption,oneclassoption.nu,verbose);
end;
if ~samedata
    for j=1:nbB
         [xsup2{j},alpha2{j},rho2{j},pos2,Ksup2{j}]=svmoneclass(B{j}, oneclassoption.kernel,oneclassoption.kerneloption,oneclassoption.nu,verbose);
     end;    
     else
         xsup2=xsup;
         alpha2=alpha;
         rho2=rho;
         Ksup2=Ksup;
     end;
for i=1:nbA
    
    for j=1:nbB  
        
        switch kernelsetoption.method
            case 'des'
                %%   calcul de l'angle entre les centres
                %%  c1,c2
                num=alpha{i}'*svmoneclassval(xsup{i},xsup2{j},alpha2{j},0,oneclassoption.kernel,oneclassoption.kerneloption);
                den=sqrt(alpha{i}'*Ksup{i}*alpha{i})*sqrt(alpha2{j}'*Ksup2{j}*alpha2{j});
                arcc1c2=acos(num/den);
                % angle
                % c2p2
                arcc2p2=acos(-rho2{j}/sqrt(alpha2{j}'*Ksup2{j}*alpha2{j}));
                % angle
                % c1p1
                arcc1p1=acos(-rho{i}/sqrt(alpha{i}'*Ksup{i}*alpha{i}));  
                dist(i,j)= arcc1c2^2/(arcc2p2^2+arcc1p1^2);
                K(i,j)=exp(-dist(i,j)./2/kernelsetoption.kerneloption^2);
                
            case 'norm'
                
                % ps entre hyperplan
                
                pshyper=alpha{i}'*svmoneclassval(xsup{i},xsup2{j},alpha2{j},0,oneclassoption.kernel,oneclassoption.kerneloption);
                normhp1=sqrt(alpha{i}'*Ksup{i}*alpha{i});
                normhp2=sqrt(alpha2{j}'*Ksup2{j}*alpha2{j});
                dist(i,j)= normhp1^2+normhp2^2-2*pshyper;
                K(i,j)=exp(-dist(i,j).^2/2/kernelsetoption.kerneloption^2)  + exp(-(rho{i}-rho2{j}).^2/2/kernelsetoption.kerneloption^2);
        end;
    end;
end;




%   
% ps entre hyperplan
%      pshyper=alpha'*svmoneclassval(xsup,xsup2,alpha2,0,kernel,kerneloption);
%      normhp1=sqrt(alpha'*Ksup*alpha);
%      normhp2=sqrt(alpha2'*Ksup2*alpha2);
%      dist(i)= normhp1^2+normhp2^2-2*pshyper;
%      K(i)=exp(-dist(i).^2/2/sigma^2) + exp(-(rho-rho2).^2/2/sigma^2);

⌨️ 快捷键说明

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