예제 #1
0
파일: rbf.c 프로젝트: jpzm/clann
clann_void_type
rbf_compute_center_widths(struct rbf *ann)
{
    clann_size_type i, j, s;
    clann_real_type v, d, maximum = 0;

    for (i = 0; i < ann->centers.rows; i++)
    {
        for (j = 0; j < ann->centers.rows; j++)
        {
            v = 0;

            for (s = 0; s < ann->centers.cols; s++)
            {
                d = *clann_matrix_value(&ann->centers, i, s);
                d = d - *clann_matrix_value(&ann->centers, j, s);
                v += d * d;
            }

            v = CLANN_SQRT(v);

            if (v > maximum)
                maximum = v;
        }
    }

    v = maximum / CLANN_SQRT(2 * ann->n_centers);

    for (i = 0; i < ann->n_centers; i++)
        ann->centers_width[i] = v;
}
예제 #2
0
파일: metric.c 프로젝트: dsimba/clann
clann_real_type
metric_norm(const clann_real_type *a,
            const unsigned int length)
{
    clann_real_type sum = 0;

    unsigned int i;
    for (i = 0; i < length; i++)
        sum += CLANN_POW(a[i], 2);

    return CLANN_SQRT(sum);
}
예제 #3
0
파일: metric.c 프로젝트: dsimba/clann
clann_real_type
metric_euclidean(const clann_real_type *a,
                 const clann_real_type *b,
                 const unsigned int length)
{
    clann_real_type e, sum = 0;

    unsigned int i;
    for (i = 0; i < length; i++)
    {
        e = a[i] - b[i];
        sum += e * e;
    }

    return CLANN_SQRT(sum);
}