Эта библиотека, на которую вы ссылаетесь — https://github.com/mariusmuja/flann/ — имеет nearest_neighbors
функция, написанная в коде MEX. Код MEX — это код C, который используется для взаимодействия с MATLAB. Люди обычно пишут код с большими вычислительными затратами на MEX, поскольку известно, что он быстрее обрабатывает циклы и другие вещи. Входные данные поступают из MATLAB и отправляются в эту функцию MEX, а выходные данные поступают из функции MEX и передаются обратно в MATLAB. По сути, это хороший черный ящик, в котором вы можете использовать его так же, как и любую другую функцию MATLAB. На самом деле, многие функции, поставляемые с MATLAB, имеют оболочки MEX, написанные для обеспечения ускорения.
Вы получаете эту ошибку, потому что вам нужно скомпилировать функцию nearest_neighbors
, чтобы была оболочка MEX, которую можно было бы вызвать в MATLAB. Эта оболочка отсутствует, потому что вы не скомпилировали код.
Во-первых, вам нужно настроить MEX. Убедитесь, что у вас есть компилятор, совместимый с вашей версией MATLAB. Вы можете сделать это, перейдя по этой ссылке:
http://www.mathworks.com/support/compilers/R20xxy/index.html
xx
— это номер версии, принадлежащий вашему MATLAB, а y
— это код символа, который следует за ним. Например, если вы используете R2013a, вы должны посетить:
http://www.mathworks.com/support/compilers/R2013a/index.html
Оказавшись там, перейдите в свою операционную систему и убедитесь, что у вас установлен один из поддерживаемых компиляторов. После того, как вы это установили, войдите в MATLAB и в командной строке введите:
mex -setup
Это позволит вам настроить MEX и выбрать нужный компилятор. Учитывая вашу ошибку, вы используете 64-разрядную версию Linux, поэтому вам будет очень легко получить GCC. Просто убедитесь, что вы выбрали версию GCC, совместимую с вашей версией MATLAB. Выбрав компилятор, вы можете скомпилировать код, выполнив это в командной строке:
>> mex -v -O nearest_neighbors.cpp
Это должно сгенерировать для вас файл nearest_neighbors
MEX. Как только это будет сделано, вы можете запустить код.
Более подробные инструкции см. в руководстве пользователя FLANN — http://people.cs.ubc.ca/~mariusm/uploads/FLANN/flann_manual-1.8.4.pdf — здесь рассказывается, как собрать и скомпилировать его для использования в MATLAB.
Удачи!
person
rayryeng
schedule
18.03.2015