1 #include <Base/Math/GenerateGauss.hh>
3 #include <Base/Math/Vector.hh>
4 #include <Base/Math/Vector.hh>
15 Sigma2Size_(sigma, ratio, size);
16 Gauss1D(size, sigma, result, normalize);
23 double &sigma,
const bool normalize)
25 Size2Sigma_(size, ratio, sigma);
26 Gauss1D(size, sigma, result, normalize);
36 const double fac = 1.0/(2.0*sigma*sigma);
38 const double n = 0.39894228040143267794 / sigma;
42 for (
int i=0; i<hws; i++){
43 result[hws+i] = result[hws-i-1] =
44 (T)(n*exp(-((
double)(i)+0.5)*((double)(i)+0.5)*fac));
46 sum += ((T)2.0)*result[hws+i];
49 for (
int i=0; i<=hws; i++){
50 result[hws+i] = result[hws-i] =
51 (T)(n*exp(-(
double)(i)*(
double)(i)*fac));
53 sum += ((T)2.0)*result[hws-i];
72 Sigma2Size_(sigma, sqrt(ratio), size);
73 Gauss2D(size, sigma, result, normalize);
82 Size2Sigma_(size, sqrt(ratio), sigma);
83 Gauss2D(size, sigma, result, normalize);
89 Gauss2D(
const unsigned size,
const double &sigma,
93 Gauss1D(size, sigma, vg,
false);
96 const int num = size*size;
97 const T *data = result.
GetData();
99 for (
int i=0; i<num; i++)
100 sum += (
double)(data[i]);
110 template BIASMathBase_EXPORT void GenerateGauss::Gauss1DSigma(const double &sigma, const double &ratio, BIAS::Vector<type> &result,const bool normalize);\
111 template BIASMathBase_EXPORT void GenerateGauss::Gauss1DSize(const unsigned size, const double &ratio, BIAS::Vector<type> &result, double &sigma, const bool normalize); \
112 template BIASMathBase_EXPORT void GenerateGauss::Gauss1D(const unsigned size, const double &sigma, BIAS::Vector<type> &result, const bool normalize);\
113 template BIASMathBase_EXPORT void GenerateGauss::Gauss2DSigma(const double &sigma, const double &ratio, BIAS::Matrix<type> &result,const bool normalize);\
114 template BIASMathBase_EXPORT void GenerateGauss::Gauss2DSize(const unsigned size, const double &ratio, BIAS::Matrix<type> &result, double &sigma, const bool normalize);\
115 template BIASMathBase_EXPORT void GenerateGauss::Gauss2D(const unsigned size, const double &sigma, BIAS::Matrix<type> &result, const bool normalize)
class for column vectors with arbitrary size
static void Gauss1DSigma(const double &sigma, const double &ratio, BIAS::Vector< T > &result, const bool normalize=true)
Vector< T > & newsize(Subscript N)
Matrix< T > OuterProduct(const Vector< T > &v) const
outer product, constructs a matrix.
static void Gauss2DSigma(const double &sigma, const double &ratio, BIAS::Matrix< T > &result, const bool normalize=true)
static void Gauss1D(const unsigned size, const double &sigma, BIAS::Vector< T > &result, const bool normalize=true)
T * GetData()
get the pointer to the data array of the matrix (for faster direct memeory access) ...
static void Gauss2DSize(const unsigned size, const double &ratio, BIAS::Matrix< T > &result, double &sigma, const bool normalize=true)
static void Gauss2D(const unsigned size, const double &sigma, BIAS::Matrix< T > &result, const bool normalize=true)
matrix class with arbitrary size, indexing is row major.
static void Gauss1DSize(const unsigned size, const double &ratio, BIAS::Vector< T > &result, double &sigma, const bool normalize=true)