Flying Fish

Thursday, February 17, 2005

Matlab 的 C 语言接口

Matlab 提供了 C 语言的外部接口,对于一些处于速度瓶颈的函数,用户可以选择用 C 语言来编译实现,可以大大降低运算时间。

根据 Matlab 的文档,用 C 语言来实现的函数需要有统一的函数入口:

void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])

用户可以修改此函数来实现 Matlab 和 C 代码的输入输出转换,还可以调用其他 C 函数来实现运算。如此编写 C 程序一个缺点是 C 语言的功能有限,比如不能使用面向对象的编程结构,变量必须在函数最前端申明等等,如果能用 C++ 编程则会更加方便。但是整个 Matlab 网站上的文档都只讨论的 C 语言的情况,只字不提 C++ 。

原来 Matlab 自带的 LCC C 编译器只提供对 C 语言的支持,但是你可以选择机器上安装的其他 C++ 编译器来完成编译任务,比如 Visual Studio .Net 2003,用 "mex -setup" 可以选择使用不同的编译器。当使用支持 C++ 的编译器后,可以把代码后缀名改成 .cpp ,然后就可以用 C++ 编写代码了,入口函数仍然是 mexFunction(...),这个相当于一般 C++ 程序中的 main(...) 函数,其他的就和写别的 C++ 程序一模一样,可以用 class 定义,template,用 STL 等等。

如果你的机器上没有安装 Visual Studio,现在微软免费提供的全套的命令行的 VC 编译工具,可以在这里找到:
http://msdn.microsoft.com/visualc/vctoolkit2003/
再配上一个免费的文本编辑工具就可以了。

0 Comments:

Post a Comment

<< Home