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

📄 knn.c

📁 麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!
💻 C
字号:
#include "proutils.h"int compare( const void *arg1, const void *arg2 );void knn(SDoubleMtx *Anlg,SDoubleMtx *Dist,SDoubleMtx *PRO,SDoubleMtx *OBJ,int Type){	int register lp,lo,l2,DO,d2,DP,N;	double *dum1,dum2,*dist,*P,*O;	O=OBJ->Mtx;	P=PRO->Mtx;	DP=PRO->Dim[0];	d2=OBJ->Dim[1];	DO=OBJ->Dim[0];	N=Anlg->Dim[1];	dum1=(double *)malloc(sizeof(double)*d2);	dist=(double *)malloc(sizeof(double)*DO*2);	for(lp=0;lp<DP;lp++){		for(l2=0;l2<d2;l2++){			//dum1[l2]=PRO->Mtx[l2*DP+lp];			dum1[l2]=P[l2*DP+lp];		}		for(lo=0;lo<DO;lo++){			dist[lo*2]=0;			for(l2=0;l2<d2;l2++){				//dum2=dum1[l2]-OBJ->Mtx[l2*DO+lo];					dum2=dum1[l2]-O[l2*DO+lo];					dist[lo*2]+=dum2*dum2; /*Tipo de norma*/			}			dist[lo*2+1]=lo+1;		}		qsort( (void *)dist, (size_t)DO, sizeof( double)*2, compare );				for(l2=0;l2<N;l2++){			Anlg->Mtx[l2*DP+lp]=dist[l2*2+1];			if(Dist->Mtx!=NULL) 				Dist->Mtx[l2*DP+lp]=sqrt(dist[l2*2]);		}			}	free(dum1);	free(dist);}int compare( const void *arg1, const void *arg2 ){	/*	double a,b;	a=((double *)arg1)[0];	b=((double *)arg2)[0];	if(a<b) return -1;	else if(b>a) return 1;	else return 0;	*/		if(((double *)arg1)[0]<((double *)arg2)[0]) return -1;	else if(((double *)arg1)[0]>((double *)arg2)[0]) return 1;	else return 0;	}

⌨️ 快捷键说明

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