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

📄 knn.cpp

📁 Non-parametric density estimation
💻 CPP
字号:
//// Matlab MEX interface for KD-tree C++ functions//// Written by Alex Ihler and Mike Mandel// Copyright (C) 2003 Alexander Ihler; distributable under GPL -- see README.txt//#define MEX#include "cpp/BallTreeDensity.h"#include "mex.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){  if(nrhs > 3 || nrhs < 2)    mexErrMsgTxt("Takes 2 or 3 arguments");  if(nlhs > 2)    mexErrMsgTxt("Outputs 2 or fewer results");  if(*mxGetPr(mxGetField(prhs[0], 0, "D")) != mxGetM(prhs[1]))    mexErrMsgTxt("Search points have different number of dimensions from tree points.");  mxArray *nns, *dists;  BallTree::index *nn_array;  BallTreeDensity findingIn = BallTreeDensity(prhs[0]);  double *findingFrom = mxGetPr(prhs[1]);  int k = 1;  if(nrhs == 3)    k = (int)mxGetScalar(prhs[2]);  int N = mxGetN(prhs[1]);  nns = mxCreateNumericMatrix(k, N, mxUINT32_CLASS, mxREAL);  dists = mxCreateDoubleMatrix(1, N, mxREAL);  nn_array = (BallTree::index *)mxGetData(nns);  findingIn.kNearestNeighbors(nn_array, mxGetPr(dists), findingFrom, N, k);  plhs[0] = nns;  // convert to matlab indices  for(BallTree::index i=0; i<N*k; i++)    if(nn_array[i] != BallTree::NO_CHILD)      nn_array[i]++;  if(nlhs >= 2)    plhs[1] = dists;}

⌨️ 快捷键说明

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