Ncut matlab 代码bug 修复

先说平台:linux

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

 

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

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

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

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

错误:orm

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

     compileDir_simple语句其实就是生成当前平台运行的可以运行的动态连接库,dll 属于动态连接库,但不是全部。语句有了,其实极可能就是缺乏配置C++编译器。运行:blog

mex -setup

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

而后才运行编译命令:input

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/

相关文章
相关标签/搜索