Skip to content

Commit 9cbb553

Browse files
committed
Updated search parameters for python/matlab bindings
1 parent 2565abd commit 9cbb553

File tree

7 files changed

+24
-13
lines changed

7 files changed

+24
-13
lines changed

src/cpp/flann/flann.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333

3434
struct FLANNParameters DEFAULT_FLANN_PARAMETERS = {
3535
FLANN_INDEX_KDTREE,
36-
32, 0.2f, 0.0f,
36+
32, 0.0f,
3737
0, -1, 0,
3838
4, 4,
39-
32, 11, FLANN_CENTERS_RANDOM,
39+
32, 11, FLANN_CENTERS_RANDOM, 0.2f,
4040
0.9f, 0.01f, 0, 0.1f,
4141
FLANN_LOG_NONE, 0
4242
};

src/cpp/flann/flann.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ struct FLANNParameters
4646

4747
/* search time parameters */
4848
int checks; /* how many leafs (features) to check in one search */
49-
float cb_index; /* cluster boundary index. Used when searching the kmeans tree */
5049
float eps; /* eps parameter for eps-knn search */
5150
int sorted; /* indicates if results returned by radius search should be sorted or not */
5251
int max_neighbors; /* limits the maximum number of neighbors should be returned by radius search */
@@ -60,6 +59,7 @@ struct FLANNParameters
6059
int branching; /* branching factor (for kmeans tree) */
6160
int iterations; /* max iterations to perform in one kmeans cluetering (kmeans tree) */
6261
enum flann_centers_init_t centers_init; /* algorithm used for picking the initial cluster centers for kmeans tree */
62+
float cb_index; /* cluster boundary index. Used when searching the kmeans tree */
6363

6464
/* autotuned index parameters */
6565
float target_precision; /* precision desired (used for autotuning, -1 otherwise) */

src/matlab/flann_build_index.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
id = map.(value);
2424
end
2525

26-
default_params = struct('algorithm', 'kdtree' ,'checks', 32, 'cb_index', 0.4, 'trees', 4, 'branching', 32, 'iterations', 5, 'centers_init', 'random', 'target_precision', 0.9,'build_weight', 0.01, 'memory_weight', 0, 'sample_fraction', 0.1, 'log_level', 'warning', 'random_seed', 0);
26+
default_params = struct('algorithm', 'kdtree' ,'checks', 32, 'eps', 0.0, 'sorted', 1, 'max_neighbors', -1, 'cores', 1, 'trees', 4, 'branching', 32, 'iterations', 5, 'centers_init', 'random', 'cb_index', 0.4, 'target_precision', 0.9,'build_weight', 0.01, 'memory_weight', 0, 'sample_fraction', 0.1, 'log_level', 'warning', 'random_seed', 0);
2727

2828
if ~isstruct(build_params)
2929
error('The "build_params" argument must be a structure');

src/matlab/flann_search.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
id = map.(value);
5252
end
5353

54-
default_params = struct('algorithm', 'kdtree' ,'checks', 32, 'trees', 4, 'branching', 32, 'iterations', 5, 'centers_init', 'random', 'cb_index', 0.4, 'target_precision', -1, 'build_weight', 0.01, 'memory_weight', 0, 'sample_fraction', 0.1, 'log_level', 'warning', 'random_seed', 0);
54+
default_params = struct('algorithm', 'kdtree' ,'checks', 32, 'eps', 0.0, 'sorted', 1, 'max_neighbors', -1, 'cores', 1, 'trees', 4, 'branching', 32, 'iterations', 5, 'centers_init', 'random', 'cb_index', 0.4, 'target_precision', 0.9,'build_weight', 0.01, 'memory_weight', 0, 'sample_fraction', 0.1, 'log_level', 'warning', 'random_seed', 0);
55+
5556

5657
if ~isstruct(search_params)
5758
error('The "search_params" argument must be a structure');

src/matlab/nearest_neighbors.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,33 @@ static void matlabStructToFlannStruct( const mxArray* mexParams, FLANNParameters
8181

8282
// search
8383
flannParams.checks = (int)*(mxGetPr(mxGetField(mexParams, 0,"checks")));
84+
flannParams.eps = (float)*(mxGetPr(mxGetField(mexParams, 0,"eps")));
85+
flannParams.sorted = (int)*(mxGetPr(mxGetField(mexParams, 0,"sorted")));
86+
flannParams.max_neighbors = (int)*(mxGetPr(mxGetField(mexParams, 0,"max_neighbors")));
87+
flannParams.cores = (int)*(mxGetPr(mxGetField(mexParams, 0,"cores")));
8488
}
8589

86-
static void flannStructToMatlabStruct( const FLANNParameters& flannParams, mxArray* mexParams )
90+
static mxArray* flannStructToMatlabStruct( const FLANNParameters& flannParams )
8791
{
92+
const char* fieldnames[] = {"algorithm", "checks", "eps", "sorted", "max_neighbors", "cores", "trees", "leaf_max_size", "branching", "iterations", "centers_init", "cb_index"};
93+
mxArray* mexParams = mxCreateStructMatrix(1, 1, sizeof(fieldnames)/sizeof(const char*), fieldnames);
94+
8895
mxSetField(mexParams, 0, "algorithm", to_mx_array(flannParams.algorithm));
8996
mxSetField(mexParams, 0, "checks", to_mx_array(flannParams.checks));
90-
mxSetField(mexParams, 0, "cb_index", to_mx_array(flannParams.cb_index));
9197
mxSetField(mexParams, 0, "eps", to_mx_array(flannParams.eps));
98+
mxSetField(mexParams, 0, "sorted", to_mx_array(flannParams.sorted));
99+
mxSetField(mexParams, 0, "max_neighbors", to_mx_array(flannParams.max_neighbors));
100+
mxSetField(mexParams, 0, "cores", to_mx_array(flannParams.cores));
92101

93102
mxSetField(mexParams, 0, "trees", to_mx_array(flannParams.trees));
94103
mxSetField(mexParams, 0, "leaf_max_size", to_mx_array(flannParams.trees));
95104

96105
mxSetField(mexParams, 0, "branching", to_mx_array(flannParams.branching));
97106
mxSetField(mexParams, 0, "iterations", to_mx_array(flannParams.iterations));
98107
mxSetField(mexParams, 0, "centers_init", to_mx_array(flannParams.centers_init));
108+
mxSetField(mexParams, 0, "cb_index", to_mx_array(flannParams.cb_index));
109+
110+
return mexParams;
99111
}
100112

101113

@@ -388,9 +400,7 @@ static void _build_index(int nOutArray, mxArray* OutArray[], int nInArray, const
388400
pOut[0] = typedIndex;
389401

390402
if (nOutArray > 1) {
391-
const char* fieldnames[] = {"algorithm", "checks", "cb_index", "eps", "trees", "leaf_max_size", "branching", "iterations", "centers_init"};
392-
OutArray[1] = mxCreateStructMatrix(1, 1, sizeof(fieldnames)/sizeof(const char*), fieldnames);
393-
flannStructToMatlabStruct(p, OutArray[1]);
403+
OutArray[1] = flannStructToMatlabStruct(p);
394404
}
395405
if (nOutArray > 2) {
396406
OutArray[2] = mxCreateDoubleMatrix(1, 1, mxREAL);

src/python/pyflann/flann_ctypes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ class FLANNParameters(CustomStructure):
8383
_fields_ = [
8484
('algorithm', c_int),
8585
('checks', c_int),
86-
('cb_index', c_float),
8786
('eps', c_float),
8887
('sorted', c_int),
8988
('max_neighbors', c_int),
@@ -93,6 +92,7 @@ class FLANNParameters(CustomStructure):
9392
('branching', c_int),
9493
('iterations', c_int),
9594
('centers_init', c_int),
95+
('cb_index', c_float),
9696
('target_precision', c_float),
9797
('build_weight', c_float),
9898
('memory_weight', c_float),
@@ -107,7 +107,6 @@ class FLANNParameters(CustomStructure):
107107
'algorithm' : 'kdtree',
108108
'checks' : 32,
109109
'eps' : 0.0,
110-
'cb_index' : 0.5,
111110
'sorted' : 1,
112111
'max_neighbors' : -1,
113112
'cores' : 0,
@@ -116,6 +115,7 @@ class FLANNParameters(CustomStructure):
116115
'branching' : 32,
117116
'iterations' : 5,
118117
'centers_init' : 'random',
118+
'cb_index' : 0.5,
119119
'target_precision' : 0.9,
120120
'build_weight' : 0.01,
121121
'memory_weight' : 0.0,

test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if (GTEST_FOUND AND HDF5_FOUND)
2424

2525
set(TEST_LIBRARIES "${HDF5_LIBRARIES}")
2626
if (HDF5_IS_PARALLEL)
27-
set(TEST_LINK_LIBRARIES "${TEST_LIBRARIES} ${MPI_LIBRARIES}")
27+
set(TEST_LIBRARIES "${TEST_LIBRARIES};${MPI_LIBRARIES}")
2828
endif()
2929

3030
flann_add_gtest(flann_linear_test flann_linear_test.cpp)

0 commit comments

Comments
 (0)