📄 classify.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 + -