如何基于MATLABC/C++数学函数库开发应用程序?

如何基于MATLABC/C++数学函数库开发应用程序?

基于MATLAB应用程序接口开发应用程序的目的一般分为三种:

1. 为了建立MATLAB与其他应用程序间的数据交换,这主要是MAT文件应用程序来完成的。

2. 为了充分利用其他应用程序的优点如计算速度快和已有的算法程序,从而避免重复的开发,这主要是通过MEX文件来完成的。

3. 为了拓广MATLAB的应用范围和应用手段,如在VBVC中对MATLAB进行调用,主要通过MATLAB引擎和MATLAB ActiveX来完成的。

基于MATLAB C/C++数学函数库开发应用程序的目的相对来说就简单多了,就是为了利用现有的MATLAB所提供的功能,简化在C/C++中对矩阵的处理。

从开发出的应用程序的执行方式看:

基于MATLAB应用程序接口开发的应用程序主要有三种:

  1. MEX文件、MAT文件应用程序和MATLAB引擎应用程序,其中MEX文件为一种动态链接库程序,它不能脱离MATLAB的工作环境而执行,必须在MATLAB的工作环境内部,通过MATLAB调用才能运行;
  2. MAT文件是一种可独立执行的应用程序,但它完成的功能非常有限,只能用于数据交换,而不能利用MATLAB所提供的功能来完成计算任务;
  3. MATLAB引擎应用程序也是一种可以独立执行的应用程序,但是在程序执行时,将在后台启动一个MATLAB进程,用于接收从应用程序发送来的指令并执行,然后按要求返回计算结果。

所以,基于MATLAB应用程序接口开发的应用程序并不是一种独立可执行的应用程序,仍然需要依靠MATLAB,而基于MATLAB C/C++数学函数库开发的应用程序则完全不同,一量它们建立成功,就无需依靠MATLAB,可以完全独立地执行,与MEX文件和MATLAB引擎应用程序相比,主要有以下几个明显的优点:

l 执行速度快

l 内存需求小

l 可以发布给没有MATLAB的用户使用

缺点:

l 用户不能在基于MATLAB C/C++数学函数库的应用程序中使用MATLAB的函数eval()input()

l 不能调用MATLAB图形句柄系统的函数

l 不能调用MATLAB工具箱的函数

l 不能访问Simulik

l MATLAB中的一些方法在C/C++中得不到支持,如“:”,“[ ]

因此,基于MATLABC/C++数学函数库编写的应用程序非常适合应用于需要进行大规模计算并且没有图形输出的场合,当然也可以使用第三方的图形系统来显示MATLAB C/C++数学函数库的计算结果。