flann-lib / flann

Fast Library for Approximate Nearest Neighbors
http://people.cs.ubc.ca/~mariusm/flann
Other
2.22k stars 647 forks source link

Hierarchical Clustering in C #333

Open tejus-gupta opened 7 years ago

tejus-gupta commented 7 years ago

How to use hierarchical clustering index in C? It would be helpful if someone could give a sample code.

tejus-gupta commented 7 years ago

Here is my code but it doesn't work:

#include <flann/flann.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
    int rows = 4;
    int cols = 4;
    int tcount = 4;

    unsigned char* dataset=malloc(4*4*sizeof(unsigned char));
    unsigned char* testset=malloc(4*4*sizeof(unsigned char));

    unsigned char* pt;
    int nn=1;
    int* result =(int*) malloc(tcount*nn*sizeof(int));
    float* dists =(float*) malloc(tcount*nn*sizeof(float));
    struct FLANNParameters p;
    float speedup;
    flann_index_t index_id;

    pt=dataset;
    for(int i=0;i<16;i++)
    {
        *pt=i;
        pt++;
    }

    pt=testset;
    for(int i=0;i<16;i++)
    {
        *pt=i;
        pt++;
    }

    p = DEFAULT_FLANN_PARAMETERS;
    p.algorithm = FLANN_INDEX_HIERARCHICAL;
    p.log_level = FLANN_LOG_INFO;

    printf("Computing index.\n");
    flann_set_distance_type(9, 2);
    index_id = flann_build_index(dataset, rows, cols, &speedup, &p);
    flann_find_nearest_neighbors_index(index_id, testset, tcount, result, dists, nn, &p);

    for(int i=0;i<tcount;i++)
        printf("%d %f\n", result[i], dists[i]);

    flann_free_index(index_id, &p);
    free(dataset);
    free(testset);
    free(result);
    free(dists);

    return 0;
}