亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? npa.c~

?? 用matlab實現的統計模式識別工具箱
?? C~
字號:
/*----------------------------------------------------------------------- NPA algorithm for separable single-class SVM problem. int single_npa(TKerFun ker,             long num_data,             long tmax,             double tolabs,             double tolrel,             double *Alpha,             double *UB,             double *LB,             long *t,             double *History             int verb) tmax, tolabs, tolrel ... Define stopping conditions:     UB-LB <= tolabs           ->  exit_flag = 1   Abs. tolerance.    (UB-LB)/(LB+1) <= tolrel  ->  exit_flag = 2   Relative tolerance.    t >= tmax                 ->  exit_flag = 0   Number of iterations.  Alpha ... Lagrangians defining found decision rule.  UB ... Achieved upper bound on the optimal solution. LB ... Achieved lower bound on the optimal solution. t  ... Number of iterations. History ... Value of LB and UB wrt. number of iterations. verb .... if 1 then print info about training. Modifications: 16-Npv-2004, VF 29-Feb-2004, VF 23-Jan-2004, VF-------------------------------------------------------------------- */#include "mex.h"#include "matrix.h"#include <math.h>#include <stdlib.h>#include <string.h>#include <limits.h>#define HISTORY_BUF 1000000#define MINUS_INF INT_MIN#define PLUS_INF  INT_MAX#define ABS(A) ((A >= 0) ? A : -A)#define MIN(A,B) ((A < B) ? A : B)#define INDEX(ROW,COL,DIM) ((COL*DIM)+ROW)/* ============================================================== Kernel NPA algorithm.============================================================== */int single_npa(const double (*kernel_fce)(long, long),            long num_data,             long tmax,            double tolabs,            double tolrel,            double **out_Alpha,            double *out_UB,            double *out_LB,            long  *out_t,               double **out_History,            int verb ){  double *Alpha;  double *History;  double LB;  double UB2;  double *ProjX;  double *K_Diag;  double *tmp_ptr;  long min_inx;  long max_inx;  long i;  long t;  long u, v;  double kuu, kvv, kuv;  double x11, x22, x33, x12, x23, x13;  double f1, f2;  double e11, e22, e12;  double den;  double lambda, omega;  double lambda12, lambda13, lambda23;  double tmp1;  double UB123, UB12, UB13, UB23;  double UB_buf[3];  long nearest_segment;  long rule1, rule2, rule3, rule4;  long History_size;  int exitflag;  /* allocate memory */  Alpha = mxCalloc(num_data, sizeof(double));  if( Alpha == NULL ) mexErrMsgTxt("Not enough memory.");  ProjX = mxCalloc(num_data, sizeof(double));  if( ProjX == NULL ) mexErrMsgTxt("Not enough memory.");  K_Diag = mxCalloc(num_data, sizeof(double));  if( K_Diag == NULL ) mexErrMsgTxt("Not enough memory.");  History_size = (tmax < HISTORY_BUF ) ? tmax+1 : HISTORY_BUF;  History = mxCalloc(History_size*2,sizeof(double));  if( History == NULL ) mexErrMsgTxt("Not enough memory.");  /* == Inicialization == */  for( LB =  PLUS_INF, i = 0; i < num_data; i++ )   {    Alpha[i] = 0;    ProjX[i] = kernel_fce( 0, i );    K_Diag[i] = kernel_fce( i, i );    if( ProjX[i] < LB ) {      LB = ProjX[i];      min_inx = i;    }  }  max_inx = 0;  UB2 = K_Diag[0];  LB = LB/sqrt(UB2);  Alpha[0] = 1;  t = 0;  rule1=0; rule2=0; rule3=0; rule4=0;  History[INDEX(0,0,2)] = LB;  History[INDEX(1,0,2)] = sqrt(UB2);  if( sqrt(UB2) <= tolabs ) exitflag = 1;  else if((sqrt(UB2)-LB)/(ABS(LB)+1) <= tolrel ) exitflag = 2;  else exitflag = -1;  /* == Main cycle == */  while( exitflag == -1 )   {    t++;         if(verb)  mexPrintf("%d: ", t);    u = max_inx;    v = min_inx;    kuu = K_Diag[u];    kvv = K_Diag[v];    kuv = kernel_fce(u,v);    x11 = UB2;    x12 = ProjX[v];    x22 = K_Diag[v];    x13 = UB2 + Alpha[u]*(ProjX[v]-ProjX[u]);    x23 = ProjX[v] + Alpha[u]*(kvv-kuv);    x33 = UB2 + 2*Alpha[u]*(ProjX[v]-ProjX[u]) +           Alpha[u]*Alpha[u]*(kvv - 2*kuv+kuu);    /* Pocitej vzdalenost od trojuhelniku x1,x2,x3 */    f1 = x11 - x12;    f2 = x11 - x13;    e11 = x22 - 2*x12 + x11;    e22 = x33 - 2*x13 + x11;    e12 = x23 - x13 - x12 + x11;    den = e11*e22 - e12*e12;    /* Trojuhelnik */    if( den > 0 )     {       lambda = (f1*e22 - f2*e12)/den;       omega = (e11*f2 - f1*e12)/den;         if( (lambda+omega <= 1) && (lambda >= 0) && (omega >=0 ) )       {          UB123 = x11*(1-lambda-omega)*(1-lambda-omega) +                   x22*lambda*lambda + x33*omega*omega +                   2*x12*lambda*(1-lambda-omega) +                   2*x13*omega*(1-lambda-omega) +                  2*x23*lambda*omega;          tmp1 = Alpha[u]*omega;          for( i = 0; i < num_data; i++ )          {             ProjX[i] = ProjX[i]*(1-lambda) +                         (lambda+tmp1)*kernel_fce(i,v) -                        tmp1*kernel_fce(i,u);             Alpha[i] = Alpha[i]*(1-lambda);          }                 Alpha[v] = Alpha[v] + lambda + tmp1;          Alpha[u] = Alpha[u] - tmp1;          UB2 = UB123;          rule4 = rule4 + 1;/*          mexPrintf("rule 4, lambda = %f, omega = %f, ", lambda, omega);*/       }        else       {          UB123 = PLUS_INF;       }    }     else    {       UB123 = PLUS_INF;    }    /* Zkus line segmenty 1-2, 1-3 a 2-3 */    if( UB123 == PLUS_INF)    {       /* Pocitej vzdalenost od segmentu x1 - x2 */       lambda12 = MIN( (x11 - x12)/(x11 - 2*x12 + x22) , 1 );       UB12 = x11*(1-lambda12)*(1-lambda12)+2*lambda12*(1-lambda12)*x12              +lambda12*lambda12*x22;       /* Pocitej vzdalenost od segmentu x1 - x3 */       lambda13 = MIN( (x11 - x13)/(x11 - 2*x13 + x33) , 1);       UB13 = x11*(1-lambda13)*(1-lambda13)+2*lambda13*(1-lambda13)*x13              +lambda13*lambda13*x33;              /* Pocitej vzdalenost od segmentu x2 - x3 */       den = (x22 - 2*x23 + x33);       if( den > 0 )       {          lambda23 = MIN((x22 - x23)/den , 1 );          UB23 = x22*(1-lambda23)*(1-lambda23)+2*lambda23*(1-lambda23)*x23                 +lambda23*lambda23*x33;       }       else       {          UB23 = PLUS_INF;       }           /* Vyber nejblizsi segment *//*       mexPrintf("UB12=%f,UB13=%f,UB23=%f, ", UB12, UB13, UB23);*/       UB_buf[0] = UB12; UB_buf[1] = UB13; UB_buf[2] = UB23;       for( UB2 = PLUS_INF, i = 0; i < 3; i++ )        {          if( UB2 > UB_buf[i] )          {             UB2 = UB_buf[i];             nearest_segment = i;          }       }       /* Pouzij nejblizsi segment */       switch( nearest_segment )       {          case 0:             for( i = 0; i < num_data; i++ )            {               ProjX[i] = ProjX[i]*(1-lambda12) + kernel_fce(i,v)*lambda12;               Alpha[i] = Alpha[i]*(1 - lambda12);            }            Alpha[v] = Alpha[v] + lambda12;            rule1 = rule1+1;/*            mexPrintf("rule 1, lambda12=%f, ", lambda12);*/            break;           case 1:            tmp1 = lambda13*Alpha[u];            for( i = 0; i < num_data; i++ )            {               ProjX[i] = ProjX[i] + tmp1*(kernel_fce(i,v) - kernel_fce(i,u));            }            Alpha[v] = Alpha[v] + tmp1;            Alpha[u] = Alpha[u] - tmp1;            rule2 = rule2+1;/*            mexPrintf("rule 2, lambda13=%f, ", lambda13);*/            break;          case 2:            tmp1 = Alpha[u]*lambda23;            for( i = 0; i < num_data; i++ )            {               ProjX[i] = lambda23*ProjX[i]                           + (1-lambda23+tmp1)*kernel_fce(i,v)                           - tmp1*kernel_fce(i,u);               Alpha[i] = Alpha[i]*lambda23;            }            Alpha[v] = Alpha[v] + 1-lambda23 + tmp1;            Alpha[u] = Alpha[u] - tmp1;            rule3 = rule3+1;/*            mexPrintf("rule 3, lambda23=%f, ", lambda23);*/            break;        }    }    /* Pocita dolni mez, min_inx a max_inx */    for( LB = PLUS_INF, tmp1 = MINUS_INF, i = 0; i < num_data; i++ )     {       if( LB > ProjX[i] )        {          LB = ProjX[i];          min_inx = i;       }       if( (Alpha[i] > 0) && (tmp1 < ProjX[i] ))       {          tmp1 = ProjX[i];          max_inx = i;       }    }    LB = LB/sqrt(UB2);    if( verb ) mexPrintf("LB=%f, UB=%f, tolabs=%f, tolrel=%f\n",        LB, sqrt(UB2), sqrt(UB2)-LB, (sqrt(UB2)-LB)/(ABS(LB)+1));/*    for(i = 0; i < num_data; i++ ) {*//*      if( Alpha[i]>0 ) mexPrintf("%d:%f ", i+1,ProjX[i]);*//*    }*//*    mexPrintf("\n");*/    /* Stopping conditions */    if( sqrt(UB2)-LB <= tolabs ) exitflag = 1;     else if( ((sqrt(UB2)-LB)/(ABS(LB)+1)) <= tolrel ) exitflag = 2;     else if(t >= tmax) exitflag = 0;     /* Store selected values */    if( t < History_size ) {      History[INDEX(0,t,2)] = LB;      History[INDEX(1,t,2)] = sqrt(UB2);    }    else {      tmp_ptr = mxCalloc((History_size+HISTORY_BUF)*2,sizeof(double));      if( tmp_ptr == NULL ) mexErrMsgTxt("Not enough memory.");      for( i = 0; i < History_size; i++ ) {        tmp_ptr[INDEX(0,i,2)] = History[INDEX(0,i,2)];        tmp_ptr[INDEX(1,i,2)] = History[INDEX(1,i,2)];      }      tmp_ptr[INDEX(0,t,2)] = LB;      tmp_ptr[INDEX(1,t,2)] = sqrt(UB2);            History_size += HISTORY_BUF;      mxFree( History );      History = tmp_ptr;    }/*    if( t >= 100) exitflag=1; */  } /* while( exitflag == -1 )  *//*  mexPrintf("rule1=%d, rule2=%d, rule3=%d, rule4=%d\n", *//*      rule1, rule2, rule3, rule4);*/  /* transform Alphas to obtain canonical hyperplane representation */  for( i = 0; i < num_data; i++ ) {    Alpha[i] = Alpha[i] / (LB*sqrt(UB2));  }  /* outputs */  (*out_Alpha) = Alpha;  (*out_UB) = sqrt(UB2);  (*out_LB) = LB;  (*out_t) = t;  (*out_History) = History;  /**/  mxFree( ProjX );  mxFree( K_Diag );  return( exitflag ); }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草97国产精品免费观看无弹窗版 | 一区二区三区不卡在线观看 | 在线欧美日韩国产| 欧美电视剧免费观看| 亚洲男人电影天堂| 国产高清不卡二三区| 欧美色综合网站| 国产网红主播福利一区二区| 亚洲国产综合在线| 91在线国产福利| 国产欧美一二三区| 国产在线麻豆精品观看| 制服丝袜中文字幕亚洲| 亚洲黄色性网站| 91在线码无精品| 国产精品久久久99| 国产高清在线精品| 久久免费偷拍视频| 麻豆一区二区三| 日韩视频在线永久播放| 亚洲第一主播视频| 欧美色图免费看| 亚洲一区二区三区四区在线 | 亚洲免费观看高清完整版在线观看 | 91伊人久久大香线蕉| 国产视频911| 美国十次综合导航| 日韩一区二区在线看| 天堂av在线一区| 91.xcao| 青青草原综合久久大伊人精品 | 亚洲人成在线播放网站岛国 | 国产成人亚洲综合a∨婷婷| 欧美成人猛片aaaaaaa| 麻豆免费精品视频| 91麻豆精品国产91久久久更新时间 | 亚洲成人免费视| 欧美唯美清纯偷拍| 亚洲一区二区五区| 91麻豆精品国产91久久久资源速度| 午夜精品一区二区三区免费视频| 欧美日韩中文国产| 青青草国产成人99久久| 精品国免费一区二区三区| 久久er99热精品一区二区| 日韩欧美一级特黄在线播放| 国产一区视频在线看| 国产精品毛片久久久久久| 91老师片黄在线观看| 亚洲最色的网站| 91精品国产综合久久久久久久| 裸体歌舞表演一区二区| 久久久久国产精品麻豆ai换脸| 成人午夜av在线| 亚洲一区二区三区影院| 日韩欧美二区三区| 成人黄色小视频| 亚洲成a人片综合在线| 精品久久久久久久久久久久久久久 | 国产区在线观看成人精品 | 国产精品一区二区黑丝| 国产欧美一区二区精品秋霞影院| 99精品热视频| 视频一区在线播放| 亚洲国产精品成人综合| 欧美午夜精品一区| 国产精品亚洲专一区二区三区| 亚洲免费观看高清完整版在线 | 国模冰冰炮一区二区| 欧美国产一区在线| 精品视频123区在线观看| 国产资源精品在线观看| 91久久奴性调教| 国产一区二区三区四| 911精品国产一区二区在线| 国产一区不卡视频| 亚洲一区免费在线观看| 久久九九国产精品| 欧美日韩五月天| 成人小视频在线| 麻豆精品在线视频| 亚洲精品第一国产综合野| 精品国产一区久久| 欧洲av在线精品| 国产河南妇女毛片精品久久久| 亚洲成人动漫在线观看| 亚洲国产经典视频| 精品欧美乱码久久久久久1区2区| 92精品国产成人观看免费| 国内精品不卡在线| 婷婷久久综合九色综合伊人色| 国产精品成人免费| 国产三级欧美三级日产三级99| 欧美日韩黄视频| 91丨九色丨黑人外教| 国产一区二区不卡在线| 日韩精品福利网| 亚洲精品国产一区二区三区四区在线 | 精品少妇一区二区三区在线视频| 在线精品视频免费观看| 福利视频网站一区二区三区| 日本在线不卡视频一二三区| 一区二区三区四区不卡视频| 国产亚洲精久久久久久| 欧美v日韩v国产v| 欧美一卡2卡3卡4卡| 欧美绝品在线观看成人午夜影视| 色先锋资源久久综合| 99国产欧美另类久久久精品| 国产aⅴ精品一区二区三区色成熟| 免费看欧美美女黄的网站| 性做久久久久久久久| 亚洲成人资源网| 日韩国产一区二| 日产国产高清一区二区三区| 日本三级亚洲精品| 日本成人中文字幕| 日本视频免费一区| 老司机精品视频线观看86| 日韩精品欧美成人高清一区二区| 日韩精品五月天| 六月丁香婷婷久久| 久久av资源网| 国产白丝精品91爽爽久久| 国内外成人在线| 夫妻av一区二区| 成人av综合一区| eeuss鲁片一区二区三区在线观看| a4yy欧美一区二区三区| 91视频.com| 欧洲在线/亚洲| 日韩一区二区三区免费观看| 精品国产乱子伦一区| 欧美国产日韩一二三区| 国产精品乱人伦中文| 亚洲久草在线视频| 日韩av一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产一区二区三区av电影| 国产成a人亚洲精品| 色播五月激情综合网| 在线观看91av| 国产欧美日韩麻豆91| 一区二区在线电影| 蜜桃av噜噜一区二区三区小说| 国内精品久久久久影院薰衣草| 成人av网址在线| 欧美日韩一区高清| 久久奇米777| 亚洲午夜精品在线| 国产一区二区在线电影| 97精品视频在线观看自产线路二| 欧美日韩国产综合久久| 久久精品夜色噜噜亚洲a∨| 亚洲女性喷水在线观看一区| 男女男精品视频网| av在线不卡观看免费观看| 欧美精品1区2区3区| 欧美高清一级片在线观看| 午夜亚洲福利老司机| 国产精品99久久久久久似苏梦涵 | 亚洲成人动漫在线观看| 国产传媒一区在线| 欧美日韩国产一二三| 中文字幕第一区综合| 免费成人你懂的| 91网站最新地址| 久久―日本道色综合久久| 午夜免费欧美电影| 色综合久久久网| 国产午夜三级一区二区三| 午夜久久电影网| 91香蕉视频mp4| 久久久久久黄色| 奇米777欧美一区二区| 色老头久久综合| 欧美激情在线观看视频免费| 另类成人小视频在线| 欧美日韩在线直播| 亚洲精品午夜久久久| 成熟亚洲日本毛茸茸凸凹| 欧美大尺度电影在线| 肉肉av福利一精品导航| 欧美性猛交xxxx黑人交| 日韩毛片视频在线看| 成人妖精视频yjsp地址| 久久久久久久综合日本| 久久www免费人成看片高清| 欧美日韩高清在线播放| 一区二区三区在线播| 91一区二区三区在线观看| 国产精品久久久久久久久动漫 | 欧美日韩精品电影| 亚洲精品综合在线| 91视频精品在这里| 亚洲特级片在线| 91在线观看免费视频| 亚洲图片欧美激情| 色综合av在线| 亚洲第一综合色|