2008年12月20日星期六

matlab和C语言混合的编译NCA

调试 Neighborhood Component Analysis的代码

http://www.cs.berkeley.edu/~fowlkes/software/nca/

发现里面有一个nca.cc文件和 mexit.m 和 nca.mexglx,mexit.m的文件内容:
mex nca.cc CC=g++ COPTIMFLAGS=-O3 CDEBUGFLAGS=-g CFLAGS='-fPIC -ansi -D_GNU_SOURCE -pthread -Wall' CXX=g++ CXXOPTIMFLAGS=-O3 CXXDEBUGFLAGS=-g CXXFLAGS='-fPIC -ansi -D_GNU_SOURCE -pthread -Wall'

开始试图在windows下弄一个g++编译器,用mex -setup 安装,但matlab识别不了, 后来查了 那本书, 发现matlab 不支持Dev C++. 并且发现nca.mexglx 是在linux下编译好的mex文件.

后来在windows下装了VC6.0,把 nca.cc改为nca.cpp,又改了下不同编译器对语法的不同的地方,编译过了. 生成nca.mexw32 , 该mex文件相当于让nca成为了maltab的内建函数.

Note:

1, 代码里面有一个函数minimize, 没看懂啥意思. 查了下, 以后再看.http://www.kyb.tuebingen.mpg.de/bs/people/carl/code/minimize/

2, 原文:http://www.cs.toronto.edu/~hinton/absps/nca.pdf 有点难理解

Prof. Sam Roweis的presentation pdf and talk about NCA:

http://videolectures.net/sam_roweis/


3, Prof. Chen cansong的一篇辅助理解下:
Discriminant common vectors versus neighbourhood components analysis and Laplacianfaces: A comparative study in small sample size problem
http://parnec.nuaa.edu.cn/jliu/papers/comparative.pdf

1 条评论:

Guang-Tong Zhou 说...

Hi, Eric,

我最近也在做NCA方面的工作,也同样遇到了你的问题,请问能否把你编译好的文件nca.cpp和nca.mexw32发给我一份,十分感谢。

另外,不知道你所用的matlab版本是多少?

我的邮箱:zhouguangtong@gmail.com