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

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

?? htrain.c

?? 隱馬爾科夫模型工具箱
?? C
?? 第 1 頁 / 共 4 頁
字號:
      ic = dcov.inv; /* covkind == FULLC */      for (i=1;i<=vSize;i++)         vTmp[i] = v1[i] - v2[i];      sum = 0.0;      for (i=2;i<=vSize;i++) {         crow = ic[i];         for (j=1; j<i; j++)            sum += vTmp[i]*vTmp[j]*crow[j];      }      sum *= 2;      for (i=1;i<=vSize;i++)         sum += vTmp[i] * vTmp[i] * ic[i][i];      break;   default:      HError(7170,"Distance: bad cov kind %d",dck);   }   if (trace&T_CDI) {      ShowVector("   dvec 1",v1,10);      ShowVector("   dvec 2",v2,10);      printf("   distance = %f\n",sqrt(sum));   }   return sqrt(sum);}/* AllocateVectors: distribute all pool vectors amongst clusters   1..curNumCl.  The centres of these clusters have already set.  Each   vector is placed in cluster with nearest centre.  Also, sets   aveCost of each cluster and returns totalCost.  Index of any cluster   with < minClustSize elements is returned, 0 otherwise */static int AllocateVectors(float *totalCost){   int n, i, bestn, cs;   float d,min;   Vector v;   if (trace&T_CAL)      printf("  allocating pool amongst %d clusters\n",curNumCl);   /* zero all clusters */   *totalCost=0.0;   for (n=1; n<=curNumCl; n++){      ccs->cl[n].aveCost = 0.0;      ccs->cl[n].csize = 0;   }   /* scan pool of vectors */   for (i=1; i<=nItems; i++) {      v = (Vector)GetItem(cvp,i);      /* find centre nearest to i'th vector */       min=Distance(v,ccs->cl[1].vCtr); bestn = 1;      for (n=2; n<=curNumCl; n++) {         d = Distance(v,ccs->cl[n].vCtr);         if (d < min) {            min = d; bestn = n;         }      }      if (trace&T_CAL)         printf("   item %d -> cluster %d, cost = %f\n",i,bestn,min);      /* increment costs and allocate vector to bestn */      *totalCost += min;         ccs->cl[bestn].aveCost += min;      cmap[i] = bestn; ++ccs->cl[bestn].csize;   }   /* Check for any empty clusters and average costs */   for (n=1; n<=curNumCl; n++) {      cs = ccs->cl[n].csize;      if (cs < minClustSize) {         if (trace&T_CAL)            printf("   cluster %d empty\n",n);         return n;      }      ccs->cl[n].aveCost /= cs;   }   return 0;}/* SplitVectors: distribute all pool vectors in cluster n between   clusters n1 and n2.  The centres of these clusters have already   set.  Each vector is placed in cluster with nearest centre.   */static void SplitVectors(int n, int n1, int n2){   int i, bestn;   float d1,d2;   Vector v;   int c,c1,c2;   if (trace&T_CAL)      printf("  SplitVectors: ");   for (i=1; i<=nItems; i++)      if (cmap[i]==n) {         v = (Vector)GetItem(cvp,i);         /* find centre nearest to i'th vector */          d1=Distance(v,ccs->cl[n1].vCtr);          d2=Distance(v,ccs->cl[n2].vCtr);          bestn = (d1<d2)?n1:n2;         /* allocate vector to bestn */         cmap[i] = bestn; ++ccs->cl[bestn].csize;      }   /* Check for any empty clusters and average costs */   c = ccs->cl[n].csize;   c1 = ccs->cl[n1].csize;   c2 = ccs->cl[n2].csize;   if (trace&T_CAL)      printf("  clusters split %d[%d] ->%d[%d] + %d[%d]\n",             n,c,n1,c1,n2,c2);      if (c1 == 0 || c2 == 0)      HError(7120,"SplitVectors: empty cluster %d[%d] ->%d[%d] + %d[%d]",             n,c,n1,c1,n2,c2);}/* FindCentres: of clusters a..b */static void FindCentres(int a, int b){   int n,i,j,cidx;   Vector v,ctr;   float cs;      for (n=a; n<=b; n++)      ZeroVector(ccs->cl[n].vCtr);   for (i=1; i<=nItems; i++) {      cidx = cmap[i];      if (cidx>=a && cidx<=b){         v = (Vector)GetItem(cvp,i);         ctr = ccs->cl[cidx].vCtr;         for (j=1; j<=vSize; j++)            ctr[j] += v[j];      }   }   for (n=a; n<=b; n++){      ctr = ccs->cl[n].vCtr;      cs = ccs->cl[n].csize;      for (j=1; j<=vSize; j++) ctr[j] /= cs;   }}/* FindCovariance: of cluster n */static void FindCovariance(int n){   Vector v,mean;   TriMat t;   int i,j,k;   double nx,x,y;   DVector sqsum;   DMatrix xsum;   Matrix c;      nx = ccs->cl[n].csize;   mean = ccs->cl[n].vCtr;   switch(ccs->ck){   case NULLC:      ccs->cl[n].cov.var = NULL;      break;   case DIAGC:       /* diagonal covariance matrix */   case INVDIAGC:    /* inverse diag covariance matrix */      sqsum = CreateDVector(&gstack,vSize);      ZeroDVector(sqsum);      for (i=1; i<=nItems; i++) {         if (cmap[i] == n) {            v = (Vector) GetItem(cvp,i);            for (j=1; j<=vSize; j++){               x = v[j]-mean[j];               sqsum[j] += x*x;            }         }      }      v = ccs->cl[n].cov.var;      for (j=1; j<=vSize; j++)         v[j] = (ccs->ck==DIAGC)?sqsum[j]/nx:nx/sqsum[j];      FreeDVector(&gstack,sqsum);      break;   case FULLC:    /* inverse full covariance matrix */      xsum = CreateDMatrix(&gstack,vSize,vSize);      c = CreateMatrix(&gstack,vSize,vSize);      ZeroDMatrix(xsum);      for (i=1; i<=nItems; i++) {         if (cmap[i] == n) {            v = (Vector) GetItem(cvp,i);            for (j=1; j<=vSize; j++)               for (k=1; k<=j; k++){                  x = v[j]-mean[j];                  y = v[k]-mean[k];                  xsum[j][k] += x*y;               }         }      }      t = ccs->cl[n].cov.inv;      for (j=1; j<=vSize; j++)         for (k=1; k<=j; k++)            t[j][k] = xsum[j][k]/nx;      CovInvert(t,c); Mat2Tri(c,t);      FreeDMatrix(&gstack,xsum);      break;   default:      HError(7170,"FindCovariance: unsupported cov kind [%d]",ccs->ck);   }}/* BiggestCluster: return index of cluster with highest average cost */static int BiggestCluster(void){   float maxCost;   int n,biggest;      maxCost=ccs->cl[1].aveCost; biggest = 1;   for (n=2; n<=curNumCl; n++)      if (ccs->cl[n].aveCost > maxCost) {         maxCost=ccs->cl[n].aveCost;         if( ccs->cl[n].csize >= minClustSize )            biggest=n;      }   return biggest;}/* FullestCluster: return index of cluster with most elements */static int FullestCluster(void){   int max,n,fullest;      max=ccs->cl[1].csize; fullest = 1;   for (n=1; n<=curNumCl; n++)      if (ccs->cl[n].csize > max) {         max=ccs->cl[n].csize; fullest=n;      }   return fullest;}/* Perturb: copy perturbed versions of cluster n into n1 and n2. */static void Perturb(int n, int n1, int n2){   int i;   Vector v,v1,v2;   float x;      if (trace&T_CGE)      printf("  Perturb: cluster %d -> %d + %d\n",n,n1,n2);   v  = ccs->cl[n].vCtr;   v1 = ccs->cl[n1].vCtr;   v2 = ccs->cl[n2].vCtr;   if (n!=n1) CopyVector(v,v1);   if (n!=n2) CopyVector(v,v2);     for (i=1; i<=vSize; i++) {      x = fabs(v[i]*0.01);      if (x<0.0001) x=0.0001;      v1[i] += x; v2[i] -= x;   }}/* NumTreeNodes: check that nc is power of 2, return 2nc-1 */static int NumTreeNodes(int nc){   int n = nc;      while (n>2) {      if ((n % 2) == 1)         HError(7172,"NumTreeNodes: nc %d not a power of 2",nc);      n /= 2;   }   return 2*nc-1;}/* InitClustering: create the cluster set data structure */static void InitClustering(MemHeap *x, Sequence vpool, int nc,                           Boolean treeCluster, CovKind distck, CovKind clusck, Covariance distcov){   int i,numClust;   Vector v;   Covariance cov;   nItems = vpool->nItems;   if (nItems < nc)      HError(7120,"InitClustering: only %d items for %d clusters",nItems,nc);   cvp = vpool;      numClust = (treeCluster)?NumTreeNodes(nc):nc;   curNumCl = 1;   ccs = (ClusterSet *)New(x,sizeof(ClusterSet));   ccs->isTree = treeCluster;   ccs->numClust = numClust;   ccs->ck = clusck;   ccs->cl = (Cluster *)New(x,sizeof(Cluster)*numClust);   --ccs->cl;  /* index is 1..numClust */   cmap = CreateShortVec(&gstack,nItems);   for (i=1; i<=nItems; i++)  /* put all vecs in cluster 1 */      cmap[i] = 1;   v = (Vector)GetItem(cvp,1); vSize = VectorSize(v);   vTmp = CreateVector(&gstack,vSize);   dck = distck; dcov = distcov;   for (i=1; i<=numClust; i++){      ccs->cl[i].csize = 0;      ccs->cl[i].vCtr = CreateVector(x,vSize);      ccs->cl[i].aveCost = 0.0;      switch (clusck){      case NULLC:         cov.var = NULL;         break;      case DIAGC:      case INVDIAGC:         cov.var = CreateVector(x,vSize);         break;      case FULLC:         cov.inv = CreateTriMat(x,vSize);         break;      default:         HError(7170,"InitClustering: bad cluster ckind");      }      ccs->cl[i].cov = cov;   }   ccs->cl[1].csize = nItems;   ccs->cl[1].aveCost = 1.0;   FindCentres(1,1);}/* EXPORT->FlatCluster: apply linear clustering to vpool */ClusterSet *FlatCluster(MemHeap *x, Sequence vpool, int nc,                         CovKind dck, CovKind cck, Covariance dcov){   int i,c,cc,ce,iter,repairCount;   float oldCost,newCost;   Boolean converged;      InitClustering(x,vpool,nc,FALSE,dck,cck,dcov);   if (trace&T_CGE)      printf("FlatCluster: %d items -> %d clusters\n",             ccs->cl[1].csize,ccs->numClust);   for (c=2; c<=ccs->numClust; c++) {      if (trace&T_CGE)         printf(" increasing from %d -> %d clusters\n",c-1,c);      /* increase num clusters by splitting biggest */      cc = BiggestCluster();      Perturb(cc,cc,c); curNumCl = c;      oldCost = 1e10;      /* reallocate vectors until cost stabilises */      for (iter=0,converged=FALSE; !converged; iter++){         repairCount = 0; /* try to fill empty clusters by splitting fullest */         while ((ce=AllocateVectors(&newCost)) != 0  && ++repairCount <=c){            cc = FullestCluster();            Perturb(cc,cc,ce);      /* ce = empty cluster */         }         if (ce != 0)            HError(7120,"FlatCluster: Failed to make %d clusters at iter %d\n",c,iter);         if (trace & T_CLC){            printf("   c=%d, iter=%d, cost = %e\n",c,iter,newCost);            fflush(stdout);         }         converged = (iter>=maxIter) || ((oldCost-newCost) / oldCost < 0.001);         FindCentres(1,curNumCl); oldCost = newCost;      }      if (trace & T_DCM) DumpClusterMap();   }   for (i=1; i<=ccs->numClust; i++)      FindCovariance(i);   FreeShortVec(&gstack,cmap);   return ccs;}  /* EXPORT->TreeCluster: apply binary tree clustering to vpool */ClusterSet *TreeCluster(MemHeap *x, Sequence vpool, int nc,                         CovKind dck, CovKind cck, Covariance dcov){   int rowsize,c,i,j;      InitClustering(x,vpool,nc,TRUE,dck,cck,dcov);   if (trace&T_CGE)      printf("TreeCluster: %d items -> %d clusters[%d nodes]\n",             ccs->cl[1].csize,nc,ccs->numClust);   FindCovariance(1);   c = 1; rowsize = 1;   while (rowsize < nc){      for (i=c,j=c+rowsize; i<c+rowsize; i++, j+=2){         Perturb(i,j,j+1);         SplitVectors(i,j,j+1);         FindCentres(j,j+1);         FindCovariance(j);         FindCovariance(j+1);      }      c += rowsize;      rowsize *= 2;   }   FreeShortVec(&gstack,cmap);   return ccs;}/* EXPORT->FreeClusterSet: free storage used by cs */void FreeClusterSet(ClusterSet *cs){   Dispose(cs->x,cs);}/* EXPORT->ShowClusterSet: print the given clusterset */void ShowClusterSet(ClusterSet *cs){   int i;   Cluster *c;   printf("%s Cluster Set: %d nodes\n",          cs->isTree?"Tree":"Flat", cs->numClust);   for (i=1,c=cs->cl+1; i<=cs->numClust; i++,c++) {      printf("%d. size=%d",i,c->csize);      if (!cs->isTree) printf(" cost=%.3f",c->aveCost);      printf("\n");      ShowVector("  mean",c->vCtr,20);      switch(cs->ck){      case NULLC:          break;      case INVDIAGC:          ShowVector("  invdiagC",c->cov.var,20);         break;      case DIAGC:          ShowVector("  diagC",c->cov.var,20);         break;      case FULLC:         ShowTriMat("  fullC",c->cov.inv,20,20);         break;      }        }}/* ------------------------- Accumulators ---------------------- */static int muC,vaC,trC,wtC,prC;/* CreateMuAcc:  create an accumulator for means */static MuAcc *CreateMuAcc(MemHeap *x, int vSize, int nPara){   MuAcc *ma;   int count;   ma = (MuAcc *)New(x,sizeof(MuAcc)*nPara);   for(count=0;count<nPara;count++){     ma[count].mu = CreateVector(x,vSize);     ZeroVector(ma[count].mu);     ma[count].occ = 0.0;     ++muC;  }   return ma;}/* CreateVaAcc: create an accumulator for square sums */static VaAcc *CreateVaAcc(MemHeap *x, int vSize, CovKind ck, int nPara){   VaAcc *va;   int count;   va = (VaAcc *) New(x,sizeof(VaAcc)*nPara);   for(count=0;count<nPara;count++){     switch(ck){     case DIAGC:     case INVDIAGC:       va[count].cov.var = CreateVector(x,vSize);       ZeroVector(va[count].cov.var);       break;     case FULLC:       va[count].cov.inv = CreateTriMat(x,vSize);       ZeroTriMat(va[count].cov.inv);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜国产不卡在线观看视频| 国产精品视频第一区| 激情综合五月婷婷| 韩国一区二区三区| 日本国产一区二区| 久久超碰97中文字幕| 亚洲女女做受ⅹxx高潮| 2020国产成人综合网| 欧美大黄免费观看| 精品国产成人在线影院| 久久久久久久久久电影| 日本一区二区三区在线不卡| 国产日韩在线不卡| 亚洲国产精品精华液ab| aaa亚洲精品| 不卡的电影网站| 91丨porny丨国产入口| 色综合中文字幕| 欧美图区在线视频| 91麻豆精品91久久久久同性| 欧美一三区三区四区免费在线看| 欧美一级淫片007| 久久99蜜桃精品| 一区二区不卡在线播放| 亚洲电影激情视频网站| 免费欧美在线视频| 强制捆绑调教一区二区| 国产露脸91国语对白| 成人美女在线观看| 欧美中文一区二区三区| 欧美三级在线视频| 精品av久久707| 国产精品福利电影一区二区三区四区| 亚洲三级免费观看| 五月天激情综合| 国产专区欧美精品| 91丝袜呻吟高潮美腿白嫩在线观看| 91福利资源站| 欧美成人免费网站| 国产精品不卡一区| 天天色 色综合| 国产成人亚洲综合a∨猫咪| 91片黄在线观看| 日韩三级视频在线看| 欧美国产日本韩| 亚洲成在人线免费| 国产揄拍国内精品对白| 色视频一区二区| 日韩欧美中文字幕一区| 国产精品久久久久久久久免费相片| 洋洋成人永久网站入口| 久久成人精品无人区| 99re这里只有精品视频首页| 欧美久久婷婷综合色| 国产农村妇女精品| 亚洲18色成人| 成人高清视频在线观看| 91精品免费在线观看| 中文字幕在线观看不卡视频| 毛片不卡一区二区| 肉肉av福利一精品导航| 亚洲第一成人在线| www.性欧美| 日韩欧美不卡在线观看视频| 亚洲欧美视频在线观看视频| 美女视频黄 久久| 日本韩国欧美三级| 久久综合狠狠综合久久综合88| 亚洲综合区在线| 成人免费视频视频在线观看免费 | 图片区小说区国产精品视频| 国产酒店精品激情| 欧美一区二区播放| 亚洲成人综合网站| 在线观看亚洲a| 国产精品第五页| 国产suv一区二区三区88区| 日韩一区二区三区四区| 亚洲一区二区三区爽爽爽爽爽| 国产91清纯白嫩初高中在线观看| 欧美一区二区久久久| 亚洲激情男女视频| 99re66热这里只有精品3直播| 成人av综合在线| 精品久久人人做人人爰| 亚洲欧美日韩中文字幕一区二区三区 | 丁香激情综合五月| 欧美电影免费观看高清完整版在 | 欧美肥胖老妇做爰| 欧美不卡一区二区三区四区| 亚洲va韩国va欧美va精品| 91久久人澡人人添人人爽欧美 | 久久99国产精品久久| 91精品国产欧美日韩| 亚洲va欧美va天堂v国产综合| 在线视频一区二区三| 又紧又大又爽精品一区二区| 成人午夜av在线| 国产精品久久久久毛片软件| 成人在线视频首页| 国产精品国产a| av午夜精品一区二区三区| 国产精品人妖ts系列视频| 成人污视频在线观看| 国产精品久久久久久亚洲伦| hitomi一区二区三区精品| 国产精品的网站| 色综合天天综合狠狠| 在线观看成人小视频| 美女视频黄久久| 欧美另类一区二区三区| 亚洲一区二区三区在线| 欧美日韩一级二级| 五月婷婷久久丁香| 日韩一区二区精品在线观看| 免费成人在线观看视频| 精品久久久网站| 国产精品白丝av| 国产精品激情偷乱一区二区∴| av电影天堂一区二区在线| 亚洲欧美电影一区二区| 91行情网站电视在线观看高清版| 亚洲韩国精品一区| 日韩一区二区三区视频在线观看| 久久99在线观看| 欧美激情一区在线| 色综合久久久久久久久| 亚洲成av人片观看| 欧美精品一区二区三区一线天视频| 国产一区不卡视频| 亚洲欧洲日韩av| 欧美日韩精品欧美日韩精品一 | 久久精品一区二区三区不卡| aaa国产一区| 亚洲电影一区二区三区| 欧美一区二区三区精品| 国产91精品久久久久久久网曝门| 亚洲图片激情小说| 91精品婷婷国产综合久久竹菊| 国产一区二区h| 一区二区三区精品在线| 日韩精品一区二区三区三区免费| 国产成人一区在线| 亚洲综合一二三区| 久久午夜免费电影| 日韩精品1区2区3区| 91免费版在线| 免费观看成人av| 国产精品久久久久久久久晋中 | 日韩欧美电影一二三| 成人精品国产一区二区4080| 亚洲精品大片www| 日韩一二三四区| 波多野结衣视频一区| 日韩高清国产一区在线| 国产精品美女久久久久aⅴ| 欧美精品 国产精品| 成人免费的视频| 日韩av电影免费观看高清完整版 | 亚洲线精品一区二区三区| 久久久无码精品亚洲日韩按摩| 色嗨嗨av一区二区三区| 国产一区在线精品| 天天操天天色综合| 一色屋精品亚洲香蕉网站| 日韩欧美另类在线| 色狠狠综合天天综合综合| 国产在线视频一区二区三区| 亚洲精品视频一区二区| 久久先锋影音av| 91精品黄色片免费大全| 91网上在线视频| 粉嫩在线一区二区三区视频| 日本午夜精品视频在线观看 | 五月婷婷久久综合| 亚洲人妖av一区二区| 精品sm捆绑视频| 51精品国自产在线| 91麻豆国产精品久久| 国产99久久精品| 久久精品99国产精品| 性做久久久久久久久| 亚洲激情第一区| 自拍偷拍亚洲激情| 国产午夜久久久久| 26uuu久久综合| 日韩欧美在线网站| 欧美高清一级片在线| 在线免费精品视频| 91在线码无精品| av午夜一区麻豆| 懂色av一区二区三区免费观看| 麻豆久久久久久久| 午夜精品免费在线观看| 亚洲精品水蜜桃| 亚洲女同一区二区| 亚洲日本免费电影| 中文字幕一区二区三中文字幕| 欧美激情一区在线观看| 国产欧美1区2区3区|