#include "iclKMeans2D.h" #include #include #include #include "iclMacros.h" namespace icl{ // {{{ typedefs typedef KMeans2D::vectorset vectorset; typedef KMeans2D::intvec intvec; typedef KMeans2D::distfunc distfunc; // }}} // {{{ utility functions // remove the n trailing elements of x inline void popFromVectorSet(vectorset &x, int n){ // {{{ open int c = (int)x.size(); for(int i=c-1-n;i=0 ); ICLASSERT_RETURN( n>=0 ); if(prototypes.size() == 0){ // initialize (search k random prototype vectors from the data) for(int p=0 ; p k) popFromVectorSet(m_vecCBV,c-k); else if (k > c) pushToVectorSet(m_vecCBV,k-c); } // }}} void KMeans2D::clear(){ // {{{ open popFromVectorSet(m_vecData,(int)m_vecData.size()); m_fError = -1; } // }}} // {{{ getter functions int KMeans2D::getK() const{ // {{{ open return (int)m_vecCBV.size(); } // }}} float KMeans2D::getError() const{ // {{{ open return m_fError; } // }}} const vectorset &KMeans2D::getPrototypes() const{ // {{{ open return m_vecCBV; } // }}} // }}} }