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

📄 adjustbw.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 <math.h>
#include "mex.h"
#include "cpp/BallTreeDensity.h"

void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[])
{
  // verify arguments
  if (nrhs != 2)
    mexErrMsgTxt("Takes 2 input arguments");
  if (nlhs != 0)
    mexErrMsgTxt("Outputs no results; modifies passed kde by reference.");

  BallTreeDensity densTree = BallTreeDensity(prhs[0]);
  int N = mxGetN(prhs[1]);
  int M = mxGetM(prhs[1]);

  if (N != densTree.Npts() && N != 1)
    mexErrMsgTxt("Wrong number of bandwidths");
  if (M != densTree.Ndim())
    mexErrMsgTxt("Wrong dimension for bandwidths");

  double* newBWs = mxGetPr(prhs[1]);
  if(densTree.getType() == BallTreeDensity::Gaussian) {
    double *newBWtmp = newBWs;
    newBWs = new double[M*N];
    for(BallTree::index i=0; i<M*N; i++)
      newBWs[i] = newBWtmp[i]*newBWtmp[i];
  }

  bool result;
  result = densTree.updateBW(newBWs, N);

  if(densTree.getType() == BallTreeDensity::Gaussian)
    delete[] newBWs;

  if (!result)
    mexErrMsgTxt("Can't change between uniform and non-uniform bandwidths");
}

⌨️ 快捷键说明

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