knn_mex.c
来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· C语言 代码 · 共 74 行
C
74 行
#include "proutils.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { SDoubleMtx Anlg[1],Dist[1],PRO[1],OBJ[1]; double *NP; if(nrhs<4) mexErrMsgTxt("Error: necesitas 4 variables de entrada"); if(nlhs>2) mexErrMsgTxt("Error: No se que hacer con mas de dos salida"); PRO->Ndim=mxGetNumberOfDimensions(prhs[0]); PRO->Dim=mxGetDimensions(prhs[0]); OBJ->Ndim=mxGetNumberOfDimensions(prhs[1]); OBJ->Dim=mxGetDimensions(prhs[1]); if(OBJ->Dim[1] != PRO->Dim[1]) mexErrMsgTxt("Error: El numero de columnas del primer y segundo argumento han de ser iguales"); /* mexPrintf("Anlg(%3d %3d %3d)\n",Anlg->Dim[0],Anlg->Dim[1],Anlg->Dim[2]); mexPrintf("NAnlg(%3d %3d)\n",NAnlg->Dim[0],NAnlg->Dim[1]);*/ NP=mxGetPr(prhs[2]); Anlg->Ndim=2; Anlg->Dim=(int *)malloc(sizeof(int)*Anlg->Ndim); Anlg->Dim[0]=PRO->Dim[0]; Anlg->Dim[1]=(int)NP[0]; plhs[0]=mxCreateNumericArray(Anlg->Ndim,Anlg->Dim,mxDOUBLE_CLASS,mxREAL); Dist->Ndim=2; Dist->Dim=(int *)malloc(sizeof(int)*Dist->Ndim); Dist->Dim[0]=PRO->Dim[0]; Dist->Dim[1]=(int)NP[0]; if(nlhs>1) plhs[1]=mxCreateNumericArray(Dist->Ndim,Dist->Dim,mxDOUBLE_CLASS,mxREAL); Anlg->Mtx=mxGetPr(plhs[0]); if(nlhs>1) Dist->Mtx=mxGetPr(plhs[1]); else Dist->Mtx=NULL; PRO->Mtx=mxGetPr(prhs[0]); OBJ->Mtx=mxGetPr(prhs[1]);/* mexPrintf("PRO(%3d %3d)\n",PRO->Dim[0],PRO->Dim[1]); mexPrintf("OBJ(%3d %3d)\n",OBJ->Dim[0],OBJ->Dim[1]); mexPrintf("Anlg(%3d %3d)\n",Anlg->Dim[0],Anlg->Dim[1]); mexPrintf("Dist(%3d %3d)\n",Dist->Dim[0],Dist->Dim[1]);*/ /*if(nrhs>3) D=(double)(*mxGetPr(prhs[3])); else D=2.; if(D==2){ knn(Anlg,Dist,PRO,OBJ,1); }else if(D==INF){ knn_norma(Anlg,Dist,PRO,OBJ,1); }else{ knn_inf(Anlg,Dist,PRO,OBJ,1); } */ knn(Anlg,Dist,PRO,OBJ,1); free(Anlg->Dim); free(Dist->Dim); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?