【问题标题】:running old mex file on new matlab releases在新的 matlab 版本上运行旧的 mex 文件
【发布时间】:2009-05-12 10:57:23
【问题描述】:

我正在尝试在新版本 (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 环境变量的引用,但究竟应该添加什么我找不到。

谢谢, 亚尔

【问题讨论】:

    标签: matlab mex


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 2022-12-01
        • 1970-01-01
        • 2021-01-23
        相关资源
        最近更新 更多