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

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

?? sc.c

?? 這是一個SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的參考價值.
?? C
字號:
/***********************************************************************sc.c - creates classifiers from feature vectors of examples, as well as   classifying example feature vectors.Copyright (C) 1991 Dean RubineThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, or (at your option)any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program (in ../COPYING); if not, write to the FreeSoftware Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.***********************************************************************/#include "bitvector.h"#include "matrix.h"#include "util.h"#include "sc.h"#include "stdio.h"#include "stdlib.h"#include "math.h"#include "zdebug.h"#define	EPS	(1.0e-6)	/* for singular matrix check */sClassifiersNewClassifier(){	register sClassifier sc = allocate(1, struct sclassifier);	sc->nfeatures = -1;	sc->nclasses = 0;	sc->classdope = allocate(MAXSCLASSES, sClassDope);	sc->w = NULL;	return sc;}voidsFreeClassifier(sc)register sClassifier sc;{	register int i;	register sClassDope scd;	for(i = 0; i < sc->nclasses; i++) {		scd = sc->classdope[i];		if(scd->name) free(scd->name);		if(scd->sumcov) FreeMatrix(scd->sumcov);		if(scd->average) FreeVector(scd->average);		free(scd);		if(sc->w && sc->w[i]) FreeVector(sc->w[i]);	}	free(sc->classdope);	if(sc->w) free(sc->w);	if(sc->cnst) FreeVector(sc->cnst);	if(sc->invavgcov) FreeMatrix(sc->invavgcov);	free(sc);}sClassDopesClassNameLookup(sc, classname)register sClassifier sc;register char *classname;{	register int i;	register sClassDope scd;	static sClassifier lastsc = NULL;	static sClassDope lastscd = NULL;	/* quick check for last class name */	if(lastsc == sc && lastscd != NULL && STREQ(lastscd->name, classname))		return lastscd;	/* linear search through all classes for name */	for(i = 0; i < sc->nclasses; i++) {		scd = sc->classdope[i];		if(STREQ(scd->name, classname))			return lastsc = sc, lastscd = scd;	}	lastsc = NULL;	lastscd = NULL;	return NULL;}static sClassDopesAddClass(sc, classname)register sClassifier sc;char *classname;{	register sClassDope scd;	sc->classdope[sc->nclasses] = scd = allocate(1, struct sclassdope);	scd->name = scopy(classname);	scd->number = sc->nclasses;	scd->nexamples = 0;	scd->sumcov = NULL;	++sc->nclasses;	return scd;}voidsAddExample(sc, classname, y)register sClassifier sc;char *classname;Vector y;{	register sClassDope scd;	register int i, j;	double nfv[50];	double nm1on, recipn;	scd = sClassNameLookup(sc, classname);	if(scd == NULL) {/* fprintf(stderr, "sAddExample: calling sAddClass on %s.\n", classname); */		scd = sAddClass(sc, classname);	      }	if(sc->nfeatures == -1) {		sc->nfeatures = NROWS(y);/*		fprintf(stderr, "sAddExample: setting sc->nfeatures to NROWS(y).\n"); */	      }	if(scd->nexamples == 0) {/* 		fprintf(stderr, "sAddExample: allocating  & zeroing scd->average & scd->sumcov.\n"); */		scd->average = NewVector(sc->nfeatures);		ZeroVector(scd->average);		scd->sumcov = NewMatrix(sc->nfeatures, sc->nfeatures);		ZeroMatrix(scd->sumcov);	}	if(sc->nfeatures != NROWS(y)) {		PrintVector(y, "sAddExample: funny feature vector nrows!=%d", 			sc->nfeatures);		return;	}	scd->nexamples++;	nm1on = ((double) scd->nexamples-1)/scd->nexamples;	recipn = 1.0/scd->nexamples;	/* incrementally update covariance matrix */        for(i = 0; i < sc->nfeatures; i++)		nfv[i] = y[i] - scd->average[i];	/* only upper triangular part computed */        for(i = 0; i < sc->nfeatures; i++)	   for(j = i; j < sc->nfeatures; j++)		scd->sumcov[i][j] += nm1on * nfv[i] * nfv[j];	/* incrementally update mean vector */	for(i = 0; i < sc->nfeatures; i++)		scd->average[i] = nm1on * scd->average[i] + recipn * y[i];}voidsDoneAdding(sc)register sClassifier sc;{	register int i, j;	int c;	int ne, denom;	double oneoverdenom;	register Matrix s;	register Matrix avgcov;	double det;	register sClassDope scd;	if(sc->nclasses == 0) {		error("No classes for adding to classifier");		return;	    }	/* Given covariance matrices for each class (* number of examples - 1)	    compute the average (common) covariance matrix */	avgcov = NewMatrix(sc->nfeatures, sc->nfeatures);	ZeroMatrix(avgcov);	ne = 0;	for(c = 0; c < sc->nclasses; c++) {		scd = sc->classdope[c];		ne += scd->nexamples;		s = scd->sumcov;		for(i = 0; i < sc->nfeatures; i++)			for(j = i; j < sc->nfeatures; j++)				avgcov[i][j] += s[i][j]; 	}	denom = ne - sc->nclasses;	if(denom <= 0) {	    error("Number of classes must be less than number of examples");	    return;	}	oneoverdenom = 1.0 / denom;	for(i = 0; i < sc->nfeatures; i++)		for(j = i; j < sc->nfeatures; j++)			avgcov[j][i] = avgcov[i][j] *= oneoverdenom;	Z('a') PrintMatrix(avgcov, "Average Covariance Matrix\n");	/* invert the avg covariance matrix */	sc->invavgcov = NewMatrix(sc->nfeatures, sc->nfeatures);	det = InvertMatrix(avgcov, sc->invavgcov);	if(fabs(det) <= EPS)		FixClassifier(sc, avgcov);		/* now compute discrimination functions */	sc->w = allocate(sc->nclasses, Vector);	sc->cnst = NewVector(sc->nclasses);	for(c = 0; c < sc->nclasses; c++) {		scd = sc->classdope[c];		sc->w[c] = NewVector(sc->nfeatures);		VectorTimesMatrix(scd->average, sc->invavgcov, sc->w[c]);		sc->cnst[c] = -0.5 * InnerProduct(sc->w[c], scd->average);		/* could add log(priorprob class c) to cnst[c] */	}	FreeMatrix(avgcov);	return;}sClassDopesClassify(sc, fv) {	return sClassifyAD(sc, fv, NULL, NULL);}sClassDopesClassifyAD(sc, fv, ap, dp)sClassifier sc;Vector fv;double *ap;double *dp;{	double disc[MAXSCLASSES];	register int i, maxclass;	double denom, exp();	register sClassDope scd;	double d;	if(sc->w == NULL) {		error("%x not a trained classifier", sc);		return(NULL);       }	for(i = 0; i < sc->nclasses; i++) {/* ari */	  double IP;	  IP = InnerProduct(sc->w[i], fv);/*	  fprintf(stderr, "sClassifyAD:  InnerProduct for class %s is %f.\n", sc->classdope[i]->name, IP); *//*	  fprintf(stderr, "sClassifyAD:  sc->cnst[i] = %f.\n", sc->cnst[i]); */	  disc[i] = IP + sc->cnst[i];/*	  fprintf(stderr, "sClassifyAD:  Set disc = %f for class %s.\n", disc[i],sc->classdope[i]->name); */	    /*	  disc[i] = InnerProduct(sc->w[i], fv) + sc->cnst[i]; */	}	maxclass = 0;	for(i = 1; i < sc->nclasses; i++)		if(disc[i] > disc[maxclass])			maxclass = i;/* ari *//* PF_INIT_COS	0	 initial angle (cos)                         *//* PF_INIT_SIN	1	 initial angle (sin)                         *//* PF_BB_LEN	2	 length of bounding box diagonal             *//* PF_BB_TH	3	 angle of bounding box diagonal              *//* PF_SE_LEN	4	 length between start and end points         *//* PF_SE_COS	5	 cos of angle between start and end points   *//* PF_SE_SIN	6	 sin of angle between start and end points   *//* PF_LEN	7	 arc length of path                          *//* PF_TH	8	 total angle traversed                       *//* PF_ATH	9	 sum of abs vals of angles traversed         *//* PF_SQTH	10	 sum of squares of angles traversed          *//* PF_DUR	11	 duration of path                            */ /* ifndef USE_TIME                                                   *//* 	NFEATURES	12                                           *//* else                                                              *//* 	PF_MAXV		12	   maximum speed                     *//* 	NFEATURES	13                                           *//* endif                                                             *//** fprintf(stderr, "\nFeature vector:\n");* fprintf(stderr, "    start cosine      %8.4f    path length       %8.4f\n",* 	fv[PF_INIT_COS], fv[PF_LEN]);* fprintf(stderr, "    start sine        %8.4f    total angle       %8.4f\n",* 	fv[PF_INIT_SIN], fv[PF_TH]);* fprintf(stderr, "    b.b. length       %8.4f    total abs. angle  %8.4f\n",* 	fv[PF_BB_LEN], fv[PF_ATH]);* fprintf(stderr, "    b.b. angle        %8.4f    total sq. angle   %8.4f\n",* 	fv[PF_BB_TH], fv[PF_SQTH]);* fprintf(stderr, "    st-end length     %8.4f    duration          %8.4f\n",* 	fv[PF_SE_LEN], fv[PF_DUR]);* fprintf(stderr, "    st-end cos        %8.4f\n", fv[PF_SE_COS]);* fprintf(stderr, "    st-end sin        %8.4f\n", fv[PF_SE_SIN]);*/ 	ZZ('C') {		scd = sc->classdope[maxclass];		PrintVector(fv, "%10.10s  ", scd->name);		ZZZ('C') {			for(i = 0; i < sc->nclasses; i++) {				scd = sc->classdope[i];				PrintVector(scd->average, "%5.5s %5g ",					scd->name, disc[i]);			}		}	}	scd = sc->classdope[maxclass];/* ari *//* fprintf(stderr,"%s", scd->name); *//*   fprintf(stderr,"Stroke identified as %s [ ", scd->name);   for (i = 0; i < sc->nclasses; i++) {      if ( (disc[maxclass] - disc[i] < 5.0) && (i != maxclass) )         fprintf(stderr,"%s ", sc->classdope[i]->name);   }   fprintf(stderr,"], ");*/	if(ap) {	/* calculate probability of non-ambiguity */		for(denom = 0, i = 0; i < sc->nclasses; i++)			/* quick check to avoid computing negligible term */			if((d = disc[i] - disc[maxclass]) > -7.0)				denom += exp(d);		*ap = 1.0 / denom;	}	if(dp) 	/* calculate distance to mean of chosen class */		*dp = MahalanobisDistance(fv, scd->average, sc->invavgcov);	return scd;}/* Compute (v-u)' sigma (v-u) */doubleMahalanobisDistance(v, u, sigma)register Vector v, u;register Matrix sigma;{	register int i;	static Vector space;	double result;	if(space == NULL || NROWS(space) != NROWS(v)) {		if(space) FreeVector(space);		space = NewVector(NROWS(v));	}	for(i = 0; i < NROWS(v); i++)		space[i] = v[i] - u[i];	result =  QuadraticForm(space, sigma);	return result;}voidFixClassifier(sc, avgcov)register sClassifier sc;Matrix avgcov;{	int i;	double det;	BitVector bv;	Matrix m, r;	/* just add the features one by one, discarding any that cause	   the matrix to be non-invertible */	CLEAR_BIT_VECTOR(bv);	for(i = 0; i < sc->nfeatures; i++) {		BIT_SET(i, bv);		m = SliceMatrix(avgcov, bv, bv);		r = NewMatrix(NROWS(m), NCOLS(m));		det = InvertMatrix(m, r);		if(fabs(det) <= EPS)			BIT_CLEAR(i, bv);		FreeMatrix(m);		FreeMatrix(r);	}	m = SliceMatrix(avgcov, bv, bv);	r = NewMatrix(NROWS(m), NCOLS(m));	det = InvertMatrix(m, r);	if(fabs(det) <= EPS) {		error("Can't fix classifier!");		return;	    }	DeSliceMatrix(r, 0.0, bv, bv, sc->invavgcov);	FreeMatrix(m);	FreeMatrix(r);}voidsDumpClassifier(sc)register sClassifier sc;{	register sClassIndex c;	printf("\n----Classifier %x, %d features:-----\n", (int)sc, sc->nfeatures);	printf("%d classes: ", sc->nclasses);	for(c = 0; c < sc->nclasses; c++)		printf("%s  ", sc->classdope[c]->name);	printf("Discrimination functions:\n");	for(c = 0; c < sc->nclasses; c++) {		PrintVector(sc->w[c], "%s: %g + ", sc->classdope[c]->name, sc->cnst[c]);		printf("Mean vectors:\n");		PrintVector(sc->classdope[c]->average, "%s: ", sc->classdope[c]->name);	    }	if( sc->invavgcov != NULL ) {	    PrintMatrix(sc->invavgcov, "Inverse average covariance matrix:\n");	}	printf("\n---------\n\n");}voidsWrite(outfile, sc)FILE *outfile;sClassifier sc;{	int i;	register sClassDope scd;	fprintf(outfile, "%d classes\n", sc->nclasses);	for(i = 0; i < sc->nclasses; i++) {		scd = sc->classdope[i];		fprintf(outfile, "%s\n", scd->name);	}	for(i = 0; i < sc->nclasses; i++) {		scd = sc->classdope[i];		OutputVector(outfile, scd->average);		OutputMatrix(outfile, scd->sumcov);		OutputVector(outfile, sc->w[i]);	}	OutputVector(outfile, sc->cnst);	OutputMatrix(outfile, sc->invavgcov);}sClassifiersRead(infile)FILE *infile;{	int i, n;	register sClassifier sc;	register sClassDope scd;	char buf[100];		Z('a') printf("Reading classifier \n");	sc = sNewClassifier();	fgets(buf, 100, infile);	if(sscanf(buf, "%d", &n) != 1) {	    error("Input error in classifier file");	    sFreeClassifier(sc);	    return(NULL);	}	Z('a') printf("  %d classes \n", n);	for(i = 0; i < n; i++) {		fscanf(infile, "%s", buf);		scd = sAddClass(sc, buf);		Z('a') printf("  %s \n", scd->name);	}	sc->w = allocate(sc->nclasses, Vector);	for(i = 0; i < sc->nclasses; i++) {		scd = sc->classdope[i];		scd->average = InputVector(infile);		scd->sumcov = InputMatrix(infile);		sc->w[i] = InputVector(infile);	}	sc->cnst = InputVector(infile);	sc->invavgcov = InputMatrix(infile);	Z('a') printf("\n");	return sc;}voidsDistances(sc, nclosest)register sClassifier sc;{	register Matrix d = NewMatrix(sc->nclasses, sc->nclasses);	register int i, j;	double min, max = 0;	int n, mi, mj;	printf("-----------\n");	printf("Computing %d closest pairs of classes\n", nclosest);	for(i = 0; i < NROWS(d); i++) {		for(j = i+1; j < NCOLS(d); j++) {			d[i][j] = MahalanobisDistance(						sc->classdope[i]->average,						sc->classdope[j]->average,						sc->invavgcov);			if(d[i][j] > max) max = d[i][j];		}	}	for(n = 1; n <= nclosest; n++) {		min = max;		mi = mj = -1;		for(i = 0; i < NROWS(d); i++) {			for(j = i+1; j < NCOLS(d); j++) {				if(d[i][j] < min)					min = d[mi=i][mj=j];			}		}		if(mi == -1)			break;		printf("%2d) %10.10s to %10.10s d=%g nstd=%g\n",			n,			sc->classdope[mi]->name,			sc->classdope[mj]->name,			d[mi][mj],			sqrt(d[mi][mj]));		d[mi][mj] = max+1;	}	printf("-----------\n");	FreeMatrix(d);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利社在线观看| 久久久久亚洲综合| 亚洲丝袜制服诱惑| 国产xxx精品视频大全| 久久久久久亚洲综合| 国精产品一区一区三区mba视频| 日韩一区二区三区三四区视频在线观看| 欧美日本高清视频在线观看| 欧美一区二区三区免费观看视频| 午夜视频一区二区三区| 9191国产精品| 美国三级日本三级久久99| 九九九久久久精品| 精品国产1区2区3区| 成人在线综合网| 亚洲欧美国产高清| 欧美日韩国产高清一区二区三区 | 欧美国产日本韩| 成人性视频免费网站| 国产日韩三级在线| 一区二区三区在线观看国产| 欧美日韩激情一区| 精品在线视频一区| 中文字幕在线观看不卡视频| 欧美性大战久久久久久久蜜臀| 日本视频免费一区| 亚洲国产高清在线| 欧美日韩你懂得| 国产一区二区三区在线看麻豆| 国产精品欧美久久久久无广告| 欧美一区二区美女| 国产成人亚洲综合a∨婷婷图片| 亚洲色图第一区| 555www色欧美视频| 成人性生交大片免费| 午夜免费欧美电影| 国产亚洲欧美一级| 欧美日韩成人综合| 成av人片一区二区| 五月激情丁香一区二区三区| 99久久伊人精品| 激情欧美一区二区三区在线观看| 欧美成人国产一区二区| 99re热这里只有精品视频| 蜜臀av性久久久久蜜臀av麻豆| 国产精品久久久久三级| 日韩女优制服丝袜电影| 97久久超碰精品国产| 久久精品久久精品| 亚洲黄网站在线观看| 久久九九99视频| 欧美一区二区三区不卡| 色哟哟一区二区在线观看| 国产乱人伦偷精品视频不卡 | 午夜精品久久久久久久久| 国产偷国产偷亚洲高清人白洁| 欧美视频在线播放| 一区二区三区欧美日韩| 亚洲国产精品成人综合色在线婷婷| 欧美另类一区二区三区| 一本色道久久综合精品竹菊| 成人午夜在线播放| 精品影院一区二区久久久| 午夜精品久久久久久久久久久| 综合久久久久久久| 国产精品欧美经典| 国产精品嫩草影院av蜜臀| 精品国产网站在线观看| 欧美成人综合网站| 国产午夜精品一区二区| 色88888久久久久久影院按摩| 成人免费电影视频| 风间由美中文字幕在线看视频国产欧美| 美女精品自拍一二三四| 日韩精品午夜视频| 午夜免费欧美电影| 日本伊人色综合网| 国产福利一区在线观看| 久久久精品影视| 2024国产精品| 精品久久久久久久人人人人传媒| 欧美一级片在线看| 韩国欧美国产1区| 韩国一区二区在线观看| 国产在线精品免费| 国产精品一区二区三区乱码| 国产精品影视网| 国产99久久精品| 亚洲乱码国产乱码精品精小说| 日韩久久一区二区| 亚洲你懂的在线视频| 亚洲综合男人的天堂| 日韩女优av电影在线观看| 欧美第一区第二区| 久久精品一级爱片| 国产精品国产自产拍高清av| 中文字幕二三区不卡| 亚洲你懂的在线视频| 亚洲国产一区在线观看| 石原莉奈在线亚洲二区| 精品一区二区综合| 在线91免费看| 欧美日韩色一区| 岛国精品一区二区| 色哟哟一区二区在线观看| 欧美日韩国产小视频在线观看| 555夜色666亚洲国产免| 久久久国产午夜精品| 1000部国产精品成人观看| 亚洲自拍另类综合| 日本不卡视频在线| 国产成人h网站| 日本久久电影网| 日韩欧美一区二区三区在线| 久久精品在线免费观看| 一二三区精品福利视频| 亚洲综合一区二区三区| 日韩欧美不卡在线观看视频| 亚洲国产日韩综合久久精品| 亚洲人被黑人高潮完整版| 国产精品亚洲专一区二区三区| 天堂一区二区在线| 激情成人综合网| 欧美高清性hdvideosex| 欧美成人精品高清在线播放 | 久久男人中文字幕资源站| 肉丝袜脚交视频一区二区| 在线精品视频一区二区三四| 亚洲色图欧洲色图婷婷| 制服丝袜中文字幕一区| 亚洲国产aⅴ天堂久久| 国产乱对白刺激视频不卡| 欧美精品xxxxbbbb| 一区二区三区免费观看| 国产99精品视频| 日韩欧美高清dvd碟片| 国产日韩精品一区二区浪潮av| 亚洲自拍偷拍欧美| 99久久99久久精品免费观看| 国产精品日产欧美久久久久| 美女网站在线免费欧美精品| 欧美xingq一区二区| 91国偷自产一区二区三区成为亚洲经典| 国产一区二区三区黄视频 | 色一情一乱一乱一91av| 国产精品久久久久久久久免费桃花| 国产精品一区二区免费不卡 | 麻豆精品视频在线观看免费 | 日韩美女视频一区二区| 成人免费毛片aaaaa**| 中文字幕一区二区三区不卡| 亚洲国产激情av| 成人国产一区二区三区精品| 亚洲国产成人高清精品| 播五月开心婷婷综合| 日韩制服丝袜av| 欧美理论电影在线| 国产三级一区二区| 亚洲欧洲另类国产综合| 欧美日韩精品一区二区三区| 中文字幕在线免费不卡| 激情图区综合网| 在线不卡欧美精品一区二区三区| 综合网在线视频| www.日本不卡| 中文乱码免费一区二区 | 专区另类欧美日韩| 国产91对白在线观看九色| 日韩欧美在线123| 三级亚洲高清视频| 欧美一级欧美三级在线观看 | 亚洲精品视频一区二区| 大桥未久av一区二区三区中文| 国产欧美日韩在线| 成人精品视频.| 中文字幕在线观看一区| 91丨porny丨在线| 亚洲精品中文在线影院| 91福利小视频| 午夜久久电影网| 欧美一区二区三区在线看| 蜜臀久久久久久久| 精品国产sm最大网站| 精品一区二区三区在线观看| 久久嫩草精品久久久久| 国产91富婆露脸刺激对白| 成人免费一区二区三区在线观看| 91浏览器打开| 天堂一区二区在线| 精品日韩一区二区三区免费视频| 中文字幕久久午夜不卡| 色婷婷综合在线| 婷婷中文字幕一区三区| 精品国产露脸精彩对白| 成人小视频免费在线观看| 一区二区三区在线观看欧美| 91麻豆精品国产91久久久资源速度 | 日韩精品电影在线| 亚洲视频免费观看| 亚洲欧美另类久久久精品 |