我正在尝试在新版本(R2009a)上运行最初在MATLAB 6.5上测试的程序,该程序使用一些MEX文件,并且在尝试运行它时会遇到以下错误:

???无效的 MEX 文件“/normalizedCut/common_files/sparsifyc.mexglx”:NormalizedCut/common_files/sparsifyc.mexglx:符号mxgetir,版本libmx。在文件libmx.so中未定义的内部,链接时间参考。

(我试图调整的代码是由 Shi 和 Malic 进行归一化剪切的,可以在这里找到:http://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip)

如果我尝试在同一系统(但 Matlab 2007a)上运行代码,它运行正常。

2009a 的向后兼容性是否存在问题?系统中是否有任何标志我可以更改以帮助其工作?

当我用谷歌搜索时,我看到了一些对 LD_LIBRARY_PATH 环境变量的引用,但到底应该添加什么内容我找不到。

谢谢,是的

有帮助吗?

解决方案

这些 mex 函数的源代码似乎可以在本页的“使用归一化剪切的图像分割”源中找到: http://www.cis.upenn.edu/~jshi/software/ (在解压后的 .zip 中的 Specific_NcutImage_files 子目录中)

其他提示

这是非常普遍的存在是运行MEX功能不同版本的Matlab的问题。你得到的错误看起来像他们由于在Matlab API的变化(虽然这让我吃惊了一点)。我已经因为在GCC变化引起的二进制不兼容的最麻烦的。我建议你联系Jiambo并问他是否可以建立一个新的版本或释放源。

最坏的情况下,可以尝试重新实现这些功能MEX。标准化的切割算法是在Matlab非常简单(请参见石和Malik纸)。通过的MEX函数的名称,它们看起来像他们大多是复制现有功能的MATLAB(矩阵乘法,矩阵稀疏化)。有一个非零的机会,如果你重新实现他们,因为他们会定期M代码功能更快反正归因于已添加到Matlab的多核支持。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top