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

📄 classify.cpp

📁 混合高斯模型的C++程序
💻 CPP
字号:
#include "clust_defs.h"#include "alloc_util.h"#include "clust_io.h"#include "classify_util.h"int Classify(int argc, char *argv[]) {    FILE *fp;    int i,j;    struct SigSet S;    char *paramfname,*datafname;    int NDataVectors,NRead;    double **data,tmp,*ll;    int maxindex;    double maxval;    if( argc!=3 ) {      fprintf(stderr,"\nUsage: %s InputParameters OutputParameters Error",argv[0]);      fprintf(stderr,"\n%s separates GMM components into individual classes.",argv[0]);      fprintf(stderr,"\nThis can be useful for unsupervised segmentation applications.\n");      exit(-1);    }    /* Read Command Line */    paramfname = argv[1];    datafname = argv[2];    /* Read SigSet from parameter file */    if((fp=fopen(paramfname,"r"))==NULL) {      fprintf(stderr, "\nError: Can't open parameter file %s",paramfname);       exit(-1);    }    I_ReadSigSet (fp,&S);    fclose(fp);    /* Determine number of lines in file */    if((fp=fopen(datafname,"r"))==NULL) {      fprintf(stderr, "\nError: Can't open data file %s",datafname);       exit(-1);    }    NRead = 1;    NDataVectors = -1;    while( NRead>0 ) {      for(j=0; j<S.nbands; j++) {        NRead = fscanf(fp,"%lf",&tmp );      }      fscanf(fp,"\n");      NDataVectors++;    }    fclose(fp);    /* Read lines from file */    if((fp=fopen(datafname,"r"))==NULL) {      fprintf(stderr, "\nError: Can't open data file %s",datafname);       exit(-1);    }    data = G_alloc_matrix(NDataVectors,S.nbands);    for(i=0; i<NDataVectors; i++) {      for(j=0; j<S.nbands; j++) {        fscanf(fp,"%lf",&(data[i][j]));      }      fscanf(fp,"\n");    }    fclose(fp);    /* Initialize constants for Log likelihood calculations */    ClassLogLikelihood_init(&S);    /* Compute Log likelihood for each class*/    ll = G_alloc_vector(S.nclasses);    for(i=0; i<NDataVectors; i++) {      ClassLogLikelihood(data[i],ll,&S);       maxval = ll[0];      maxindex = 0;      for(j=0; j<S.nclasses; j++) {        if( ll[j] > maxval ) {          maxval = ll[j];          maxindex = j;        }      }      for(j=0; j<S.nclasses; j++) printf("Loglike = %g ",ll[j]);       printf("ML Class = %d\n",maxindex);     }    G_free_vector(ll);    G_free_matrix(data);    return(0);}

⌨️ 快捷键说明

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