我在matlab中有一个调用其他库的脚本。我在linux上使用matlab版本2012 a。我犯了错误,我不知道怎么改正。
错误是:
无效的MEX-file‘/home/XXX/近邻.MEX 64’:libflann.so.1.8:无法打开共享对象文件:没有这样的文件或目录 flann_search (第82行)索引中的错误,dists = nearest_neighbors('find_nn',data,testset,n,params); MyScript (第73行)结果中的错误,ndists = flann_search(Ntraindata',Ntraindata',resu.KNN,struct(‘算法’,‘复合’,.
发布于 2015-03-18 19:41:34
您所指的库- https://github.com/mariusmuja/flann/ -有用MEX代码编写的nearest_neighbors函数。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.htmlxx是属于你的MATLAB的版本号,y是紧随其后的字符代码。例如,如果您使用的是R2013a,您可以访问:
http://www.mathworks.com/support/compilers/R2013a/index.html一旦您在那里,请进入您的操作系统,并确保安装了这些受支持的编译器之一。安装完毕后,进入MATLAB,并在命令提示符中键入:
mex -setup这将允许您设置MEX并选择所需的编译器。考虑到您的错误,您使用的是Linux 64位,所以您应该很容易得到GCC。只需确保您选择一个版本的GCC,是兼容您的版本的MATLAB。选择编译器后,可以通过在命令提示符中这样做来编译代码:
>> mex -v -O nearest_neighbors.cpp这将为您生成nearest_neighbors MEX文件。一旦完成,现在就可以运行代码了。
有关更详细的说明,请查看FLANN的用户手册-- manual-1.8.4.pdf --它将告诉您如何构建和编译它以供MATLAB使用。
祝好运!
https://stackoverflow.com/questions/29130932
复制相似问题