getprctile_mex.c

来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· C语言 代码 · 共 52 行

C
52
字号
#include "proutils.h"

void mexFunction(int nlhs, mxArray  *plhs[], int nrhs, const mxArray *prhs[]) {
	SDoubleMtx Umb[1],Anlg[1],NAnlg[1],Prob[1],Pesos[1];
	int k;
	
	if(nrhs<3 | nrhs>3) 
		mexErrMsgTxt("Error: necesitas 3 variables de entrada");
	if(nlhs>1) 
		mexErrMsgTxt("Error: No se que hacer con mas de una salida");
	
	Umb->Ndim=mxGetNumberOfDimensions(prhs[0]);
	Umb->Dim=mxGetDimensions(prhs[0]);
	if(Umb->Dim[0]<1) 
		mexErrMsgTxt("Error: Los Umbrales ha de tener 1 fila");
	
	Anlg->Ndim=mxGetNumberOfDimensions(prhs[1]);
	Anlg->Dim=mxGetDimensions(prhs[1]);
	
	NAnlg->Ndim=mxGetNumberOfDimensions(prhs[2]);
	NAnlg->Dim=mxGetDimensions(prhs[2]);
/*
	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]);
*/
	if(NAnlg->Dim[0]!=Anlg->Dim[0] | NAnlg->Dim[1]!=Anlg->Dim[1])
		mexErrMsgTxt("Error: El numero de filas y columnas de NAnlg y Anlg han de ser iguales");
	
	Prob->Ndim=3;
	Prob->Dim=(int *)malloc(sizeof(int)*Prob->Ndim);
	Prob->Dim[0]=Anlg->Dim[0];
	Prob->Dim[1]=Anlg->Dim[1];
	Prob->Dim[2]=Umb->Dim[1];
	Pesos->Mtx=NULL;
	
	plhs[0]=mxCreateNumericArray(Prob->Ndim,Prob->Dim,mxDOUBLE_CLASS,mxREAL);
	
	
	Prob->Mtx=mxGetPr(plhs[0]);	
	Umb->Mtx=mxGetPr(prhs[0]);
	Anlg->Mtx=mxGetPr(prhs[1]);
	NAnlg->Mtx=mxGetPr(prhs[2]);
/*	
	mexPrintf("Umb(%3d %3d)\n",Umb->Dim[0],Umb->Dim[1]);
	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]);
	mexPrintf("Prob(%3d %3d %3d)\n",Prob->Dim[0],Prob->Dim[1],Prob->Dim[2]);
*/
	getprctile(Prob,Umb,Anlg,NAnlg,Pesos);
	free(Prob->Dim);	
}

⌨️ 快捷键说明

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