首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab缺少依赖项MEX-文件

问Matlab缺少依赖项MEX-文件
EN

Stack Overflow用户
提问于 2015-03-18 19:22:33
回答 1查看 1.5K关注 0票数 1

我在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(‘算法’,‘复合’,.

EN

回答 1

Stack Overflow用户

发布于 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版本兼容的编译器。您可以通过访问以下链接来做到这一点:

代码语言:javascript
复制
http://www.mathworks.com/support/compilers/R20xxy/index.html

xx是属于你的MATLAB的版本号,y是紧随其后的字符代码。例如,如果您使用的是R2013a,您可以访问:

代码语言:javascript
复制
http://www.mathworks.com/support/compilers/R2013a/index.html

一旦您在那里,请进入您的操作系统,并确保安装了这些受支持的编译器之一。安装完毕后,进入MATLAB,并在命令提示符中键入:

代码语言:javascript
复制
mex -setup

这将允许您设置MEX并选择所需的编译器。考虑到您的错误,您使用的是Linux 64位,所以您应该很容易得到GCC。只需确保您选择一个版本的GCC,是兼容您的版本的MATLAB。选择编译器后,可以通过在命令提示符中这样做来编译代码:

代码语言:javascript
复制
>> mex -v -O nearest_neighbors.cpp

这将为您生成nearest_neighbors MEX文件。一旦完成,现在就可以运行代码了。

有关更详细的说明,请查看FLANN的用户手册-- manual-1.8.4.pdf --它将告诉您如何构建和编译它以供MATLAB使用。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29130932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档