variancepartitioner.cpp
来自「dysii是一款非常出色的滤波函数库」· C++ 代码 · 共 49 行
CPP
49 行
#include "VariancePartitioner.hpp"using namespace indii::ml::aux;VariancePartitioner::~VariancePartitioner() { //}void VariancePartitioner::init(Partitioner::points& xws) { /* pre-condition */ assert (xws.size() >= 2); const unsigned int N = xws.front()->x.size(); Partitioner::points::iterator iter, end; double W = 0.0; // total weight vector mu(N), sigma(N); // mean, variance /* calculate mean and variance */ mu.clear(); sigma.clear(); iter = xws.begin(); end = xws.end(); while (iter != end) { W += (*iter)->w; noalias(mu) += (*iter)->w * (*iter)->x; noalias(sigma) += (*iter)->w * element_prod((*iter)->x, (*iter)->x); iter++; } mu /= W; sigma /= W; noalias(sigma) -= element_prod(mu, mu); /* select dimension of highest variance */ this->index = index_norm_inf(sigma); /* split on mean of given dimension */ this->value = mu(index);}Partitioner::Partition VariancePartitioner::assign(const aux::vector& x) { if (x(index) <= value) { return Partitioner::LEFT; } else { return Partitioner::RIGHT; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?