Skip to content

Commit 3db68ee

Browse files
committed
added locality-sensitive hashing to Matlab wrapper
1 parent 4f4683b commit 3db68ee

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/matlab/flann_build_index.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
center_algos = struct('random', 0, 'gonzales', 1, 'kmeanspp', 2 );
1111
log_levels = struct('none', 0, 'fatal', 1, 'error', 2, 'warning', 3, 'info', 4);
1212

13-
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);
13+
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, 'table_number', 12, 'key_size', 20, 'multi_probe_level', 2, 'log_level', 'warning', 'random_seed', 0);
1414

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

src/matlab/flann_search.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@
3434
% Marius Muja, January 2008
3535

3636

37-
algos = struct( 'linear', 0, 'kdtree', 1, 'kmeans', 2, 'composite', 3, 'saved', 254, 'autotuned', 255 );
37+
algos = struct( 'linear', 0, 'kdtree', 1, 'kmeans', 2, 'composite', 3, 'lsh', 6, 'saved', 254, 'autotuned', 255 );
3838
center_algos = struct('random', 0, 'gonzales', 1, 'kmeanspp', 2 );
3939
log_levels = struct('none', 0, 'fatal', 1, 'error', 2, 'warning', 3, 'info', 4);
4040

41-
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);
41+
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, 'table_number', 12, 'key_size', 20, 'multi_probe_level', 2, 'log_level', 'warning', 'random_seed', 0);
4242

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

src/matlab/nearest_neighbors.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,16 @@ static void matlabStructToFlannStruct( const mxArray* mexParams, FLANNParameters
8686
flannParams.sorted = (int)*(mxGetPr(mxGetField(mexParams, 0,"sorted")));
8787
flannParams.max_neighbors = (int)*(mxGetPr(mxGetField(mexParams, 0,"max_neighbors")));
8888
flannParams.cores = (int)*(mxGetPr(mxGetField(mexParams, 0,"cores")));
89+
90+
// lsh
91+
flannParams.table_number_ = (unsigned int)*(mxGetPr(mxGetField(mexParams, 0, "table_number")));
92+
flannParams.key_size_ = (unsigned int)*(mxGetPr(mxGetField(mexParams, 0, "key_size")));
93+
flannParams.multi_probe_level_ = (unsigned int)*(mxGetPr(mxGetField(mexParams, 0, "multi_probe_level")));
8994
}
9095

9196
static mxArray* flannStructToMatlabStruct( const FLANNParameters& flannParams )
9297
{
93-
const char* fieldnames[] = {"algorithm", "checks", "eps", "sorted", "max_neighbors", "cores", "trees", "leaf_max_size", "branching", "iterations", "centers_init", "cb_index"};
98+
const char* fieldnames[] = {"algorithm", "checks", "eps", "sorted", "max_neighbors", "cores", "trees", "leaf_max_size", "branching", "iterations", "centers_init", "cb_index", "table_number", "key_size", "multi_probe_level"};
9499
mxArray* mexParams = mxCreateStructMatrix(1, 1, sizeof(fieldnames)/sizeof(const char*), fieldnames);
95100

96101
mxSetField(mexParams, 0, "algorithm", to_mx_array(flannParams.algorithm));
@@ -108,6 +113,10 @@ static mxArray* flannStructToMatlabStruct( const FLANNParameters& flannParams )
108113
mxSetField(mexParams, 0, "centers_init", to_mx_array(flannParams.centers_init));
109114
mxSetField(mexParams, 0, "cb_index", to_mx_array(flannParams.cb_index));
110115

116+
mxSetField(mexParams, 0, "table_number", to_mx_array(flannParams.table_number_));
117+
mxSetField(mexParams, 0, "key_size", to_mx_array(flannParams.key_size_));
118+
mxSetField(mexParams, 0, "multi_probe_level", to_mx_array(flannParams.multi_probe_level_));
119+
111120
return mexParams;
112121
}
113122

0 commit comments

Comments
 (0)