www.pudn.com > 基于VC的神经网络开发程序包(源码).rar > KohonenMap3D.cpp


#include "../include/KohonenMap3D.h" 
#include  
 
namespace annie 
{ 
 
KohonenMap3D::KohonenMap3D(int X, int Y, int Z, int dimension) : KohonenMap(dimension,X*Y*Z) 
{ 
	_X = X; 
	_Y = Y; 
	_Z = Z; 
} 
 
real 
KohonenMap3D::getR(int n1, int n2) 
{ 
	int N1[3]; 
	int N2[3]; 
	getXYZ(n1,N1[0],N1[1],N1[2]); 
	getXYZ(n2,N2[0],N2[1],N2[2]); 
	 
	real r = 0.0; 
	for (int i=0; i<3; i++) 
	{ 
		real temp = N1[i] - N2[i]; 
		r += temp*temp; 
	} 
	r = sqrt(r); 
	return r; 
} 
 
void 
KohonenMap3D::getXYZ(int i, int &x, int &y, int &z) 
{ 
	// i = (x*_X+y)*_Y + z 
	x = i / (_Y * _Z); 
    y = (i - x * (_Y * _Z)) / _Z; 
	z = i % _Z; 
} 
 
int 
KohonenMap3D::getNeuronIndex(int x, int y, int z) 
{	return x*(_Y*_Z)+y*_Z+z;	} 
 
int 
KohonenMap3D::getWinner()  
{ 
	return KohonenMap::getWinner(); 
} 
 
void 
KohonenMap3D::getWinner(int &x, int &y, int &z) 
{ 
	int w = KohonenMap::getWinner(); 
	getXYZ(w,x,y,z); 
} 
 
}; //namespace annie