您所指的那个库 - https://github.com/mariusmuja/flann/ - 具有nearest_neighbors
用 MEX 代码编写的函数。MEX 代码是用于与 MATLAB 交互的 C 代码。人们通常在 MEX 中编写计算量很大的代码,因为众所周知,它可以更快地处理循环和其他事情。输入来自 MATLAB 并发送到此 MEX 函数,输出来自 MEX 函数并通过管道传回 MATLAB。它基本上是一个不错的黑匣子,您可以像使用任何其他 MATLAB 函数一样使用它。事实上,MATLAB 附带的许多函数都编写了 MEX 包装器来促进加速。
您收到该错误是因为您需要编译该nearest_neighbors
函数,以便有一个可以在 MATLAB 中调用的 MEX 包装器。缺少该包装器,因为您尚未编译代码。
首先,您需要设置 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。只需确保选择与您的 MATLAB 版本兼容的 GCC 版本即可。选择编译器后,您可以通过在命令提示符下执行以下操作来编译代码:
>> 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 使用.
祝你好运!