• Ncut matlab 代码bug 修复


    先说平台:

        win7 x64,matlab 2012a x64,亲测运行。

        ncut 是个图像切割方法,以后再回顾具体算法吧,网上很多流程的是Jianbo Shi 这位2000年写的,名字应该是:Data Clustering with Normalized Cuts

        问题是普遍流行是他2004修改版,然后其官网上最新也是2009版,那时候还没有问题,可是随着matlab 更新,不再支持 windows 下直接调用.dll文件了,而其公布的代码windows 平台是使用dll 的,如果还有 函数的.h头文件那还可以部分修改调用,问题是没有啊。

         在没有修复前主要问题是不能调用函数 :sparsifyc    spmtimesd。

         去下2009年的代码,作者真是懒,相关代码还是2004年,根本没有更新,只是添加了其他代码,2009版本有一堆封装了的cpp函数查看不了啊,还好有作者有写指引,可是指引不全阿。根据指引切换解压目录 运行 compileDir_simple ,可是第一次运行根本就是全部出错嘛,哪有作者说的可以忽略。

    错误:

    Error: Could not detect a compiler on local system which can compile the specified input file(s)...

         compileDir_simple语句其实就是生成当前平台运行的能够运行的动态链接库,dll 属于动态链接库,但不是所有。语句有了,其实很可能就是缺少配置C++编译器。运行:

    mex -setup

         根据指引选择。我用的是 Microsoft Visual C++ 2010 in F:Program Files (x86)Microsoft Visual Studio 10.0

    然后才运行编译命令:

    compileDir_simple

    这个我运行时候还是会有部分出错,但缺少的成功了!

    解释下后序,mexw64,指在windows64 平台使用,mexglx指在linux 平台,mexmac指在mac 平台。

    这时候将生产的都放到函数目录下,ncutw,我主要是使用是基于相似度矩阵做ncut,所以基于图的ncut 我没有运行。

    放到了目录下运行还是会出错的,因为代码是基于32位 编写,所以,需要对代码进一步修改,将全部的:

    int32() -> int64()。

    这时候,成功运行了,我跑了20个数据集,没有问题,基于图的ncut我没有跑,用到的时候再看看吧。

    随着matlab 的更新,很多就的代码需要更新,例如上面的情况,其实有个简单的解决便是下个旧版本的matlab。

    可是,2010 或之前的版本 使用int64,是可以,但不支持运算操作阿。

    例如 int64(a) - int64(b) ,会提示 减法出错。

    另附作者的连接:

    http://www.cis.upenn.edu/~jshi/software/

  • 相关阅读:
    我总结的存储过程编码规范 荣
    清空数据日志[转]
    GridView使用DataBind方法绑定数据时的分页问题[转]
    Datatable绑定GridView[转]
    javascript 刷新页面 关闭窗口[转]
    GridView和CheckBox结合[转]
    SQLServer 游标简介与使用说明[转]
    Windows Mobile 5中的新特性
    flash与后台数据交换方法整理3WebService篇
    netbeans+j2mepolish 环境下开发黑莓(BlackBerry) 程序
  • 原文地址:https://www.cnblogs.com/Azhu/p/4145166.html
Copyright © 2020-2023  润新知