6

我正在尝试在新版本(R2009a)上运行最初在 Matlab 6.5 上测试的程序该程序使用了一些 mex 文件,尝试运行它时出现以下错误:

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

(我试图调整的代码是由 Shi & Malic 规范化的,可以在这里找到: http ://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip )

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

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

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

谢谢, 亚尔

4

2 回答 2

4

这些 mex 函数的源代码似乎可在此页面上的“具有标准化剪切的图像分割”源中获得:http ://www.cis.upenn.edu/~jshi/software/ (在解压缩的 specific_NcutImage_files 子目录中。压缩)

于 2009-12-13T22:43:23.397 回答
0

使用不同版本的 Matlab 运行 mex 函数时出现问题是很常见的。您遇到的错误看起来像是由于 Matlab 中的 API 更改造成的(尽管这让我有点吃惊)。由于 gcc 的变化引起的二进制不兼容,我遇到了最大的麻烦。我建议联系Jianbo 并询问他是否可以构建新版本或发布源代码。

最坏的情况,您可以尝试重新实现这些 mex 函数。标准化切割算法在 Matlab 中非常简单(参见Shi 和 Malik 论文)。根据 mex 函数的名称,它们看起来主要是在复制现有的 matlab 功能(矩阵乘法、矩阵稀疏化)。如果您将它们重新实现为常规的 m 代码函数,那么由于已添加到 Matlab 的多核支持,它们无论如何都会更快。

于 2009-05-12T11:19:52.807 回答