- ·上一篇文章:QQ游戏感言之情系俄罗斯方块!
- ·下一篇文章:你的号码与Q币原来是这样被盗的
Simulink与VC++6.0接口
Simulink与VC应用程序接口一个显著的特点就是Simulink仿真必须依赖于MATLAB系统,目前为止,MATLAB提供引擎方式将Simulink同VC应用程序的编程结合起来。要通过引擎方式将Simulink与VC结合起来首先要掌握VC与MATLAB通过引擎方式混合编程以及Simulink命令行仿真两方面的内容。
MATLAB引擎方式函数库
MATLAB引擎函数库是MATLAB提供引擎方式接口的一系列程序的集合,它允许用户用自己的C/C++语言或FORTRAN语言应用程序中对MATLAB进行调用,将MATLAB作为一个计算引擎使用,让其在后台运行,完成复杂的矩阵计算,简化前台用户程序设计的任务。
在用户启动MATLAB引擎时,相当了启动了另外一个MATLAB进程并在后台运行。应用程序通过MATLAB引擎函数库中提供的函数完成与MATLAB引擎之间进行数据交换和命令传送的任务。MATLAB引擎函数库总共提供了13个C语言的引擎函数,它们均在头文件engine.h中予以说明,所以在使用它们时,必须对该头文件进行包含。下面简要介绍引擎库中的六个基本库函数:
(1) engOpen
功能:启动MATLAB引擎。
语法:Engine* engOpen(const char* startcmd);
其中,startcmd为一字符串,用于启动MATLAB进程。在Windows中,startcmd必须为NULL。
(2) engClose
功能:退出MATLAB引擎。
语法:int engClose(Engine* ep);
其中,ep是Engine类型的指针。EngClose发出退出MATLAB命令,成功时返回0,否则返回l。
(3) engEvalString
功能:执行一个用字符串表示的MATLAB表达式。
语法:int engEvalString(Engine* ep, const char* string);
其中,string是命令字符串,该字符串必须是一个合法的MATLAB表达式。凡可在MATLAB命令窗口中执行的命令均可以字符串形式执行。
(4) engGetArray
功能:从MATLAB的工作空间中拷贝一个变量。
语法:mxArray* engGetArray(Engine* ep, const char* name);
其中,name是从engine中得到的mxArray名。engGetArray从ep所指向的engine中读取使用参数name指定的mxArray结构体的内容,正确返回时其返回值为一指向新分配的mxArray结构体对象的指针,否则为NULL。 (5) engPutArray
功能:将mxArray结构体类型变量放入MATLAB的工作空间中。
语法:int engPutArray(engine* ep, const mxArray* mp);
其中,mp为mxArray结构体对象的指针。engPutArray将一个mxArray结构体类型的变量写入引擎ep。如果当前程序的工作空间中不存在指定的mxArray结构体,则函数会自动创建。若有同名的mxArray结构体存在,它将被这一新的mxArray结构体取代。
(6) engOutPutBuffer
功能:确定存放MATLAB输出结果的缓冲区域。
语法:int engOutputBuffer(Engine* eP,char* p,int n);
使用engOutputBuffer,用户可以为引擎指针ep所指向的引擎设置一个输出缓冲区,将MATLAB输出到屏幕上的内容保存在其中,其长度由参数n确定,位置由字符指针p来确定。
VC++6.0集成环境中建立MATLAB引擎程序的方法
第一步,建立项目工程。启动VC++6.0集成环境,选择File下拉式菜单中的New选项,可有三种类型的应用程序创建工程选择.分别为MFC AppWizard(exe)、Win32Application和Win32conso1e Application。选择其中一种,在Project name编辑框中输入项目名,按照项目向导完成项目工程创建。
第二步,设置编译环境。选择下拉式菜单Tools中的菜单项Options,选择其中的Directories属性页,在其中的Show directories下拉式选项框中分别选择Include Files和Library Files,在下部的编辑框中通过浏览分别添加如下路径:Include Fiels:MATLAB根目录\extern\include
MATLAB根目录\extern\include\cpp
Library Fiels:MATLAB根目录\extern\lib
MATLAB根目录\extern\include
第三步,设置项目连接选项。选择菜单Project中的子菜单Settings,选择其中的属性页Link,在其中的Catogery下拉式选项框中选择Input.在下部的Object Library modules编辑框中填写:libeng.lib、libmx.1ib和libmat.1ib。(具体用到什么库由你的应用决定)
第四步,加入引擎头文件。在准备使用MATLAB引擎的类的cpp文件中,加入“#include “engine.h””语句,并且在以后建立的要使用MATLAB引擎的类中也注意加入上述语句。
当完成以上述四步工作后,用户就可以在VC++中对MATLAB引擎程序进行编译和调试了。
MATLAB引擎方式函数库
MATLAB引擎函数库是MATLAB提供引擎方式接口的一系列程序的集合,它允许用户用自己的C/C++语言或FORTRAN语言应用程序中对MATLAB进行调用,将MATLAB作为一个计算引擎使用,让其在后台运行,完成复杂的矩阵计算,简化前台用户程序设计的任务。
在用户启动MATLAB引擎时,相当了启动了另外一个MATLAB进程并在后台运行。应用程序通过MATLAB引擎函数库中提供的函数完成与MATLAB引擎之间进行数据交换和命令传送的任务。MATLAB引擎函数库总共提供了13个C语言的引擎函数,它们均在头文件engine.h中予以说明,所以在使用它们时,必须对该头文件进行包含。下面简要介绍引擎库中的六个基本库函数:
(1) engOpen
功能:启动MATLAB引擎。
语法:Engine* engOpen(const char* startcmd);
其中,startcmd为一字符串,用于启动MATLAB进程。在Windows中,startcmd必须为NULL。
(2) engClose
功能:退出MATLAB引擎。
语法:int engClose(Engine* ep);
其中,ep是Engine类型的指针。EngClose发出退出MATLAB命令,成功时返回0,否则返回l。
(3) engEvalString
功能:执行一个用字符串表示的MATLAB表达式。
语法:int engEvalString(Engine* ep, const char* string);
其中,string是命令字符串,该字符串必须是一个合法的MATLAB表达式。凡可在MATLAB命令窗口中执行的命令均可以字符串形式执行。
(4) engGetArray
功能:从MATLAB的工作空间中拷贝一个变量。
语法:mxArray* engGetArray(Engine* ep, const char* name);
其中,name是从engine中得到的mxArray名。engGetArray从ep所指向的engine中读取使用参数name指定的mxArray结构体的内容,正确返回时其返回值为一指向新分配的mxArray结构体对象的指针,否则为NULL。 (5) engPutArray
功能:将mxArray结构体类型变量放入MATLAB的工作空间中。
语法:int engPutArray(engine* ep, const mxArray* mp);
其中,mp为mxArray结构体对象的指针。engPutArray将一个mxArray结构体类型的变量写入引擎ep。如果当前程序的工作空间中不存在指定的mxArray结构体,则函数会自动创建。若有同名的mxArray结构体存在,它将被这一新的mxArray结构体取代。
(6) engOutPutBuffer
功能:确定存放MATLAB输出结果的缓冲区域。
语法:int engOutputBuffer(Engine* eP,char* p,int n);
使用engOutputBuffer,用户可以为引擎指针ep所指向的引擎设置一个输出缓冲区,将MATLAB输出到屏幕上的内容保存在其中,其长度由参数n确定,位置由字符指针p来确定。
VC++6.0集成环境中建立MATLAB引擎程序的方法
第一步,建立项目工程。启动VC++6.0集成环境,选择File下拉式菜单中的New选项,可有三种类型的应用程序创建工程选择.分别为MFC AppWizard(exe)、Win32Application和Win32conso1e Application。选择其中一种,在Project name编辑框中输入项目名,按照项目向导完成项目工程创建。
第二步,设置编译环境。选择下拉式菜单Tools中的菜单项Options,选择其中的Directories属性页,在其中的Show directories下拉式选项框中分别选择Include Files和Library Files,在下部的编辑框中通过浏览分别添加如下路径:Include Fiels:MATLAB根目录\extern\include
MATLAB根目录\extern\include\cpp
Library Fiels:MATLAB根目录\extern\lib
MATLAB根目录\extern\include
第三步,设置项目连接选项。选择菜单Project中的子菜单Settings,选择其中的属性页Link,在其中的Catogery下拉式选项框中选择Input.在下部的Object Library modules编辑框中填写:libeng.lib、libmx.1ib和libmat.1ib。(具体用到什么库由你的应用决定)
第四步,加入引擎头文件。在准备使用MATLAB引擎的类的cpp文件中,加入“#include “engine.h””语句,并且在以后建立的要使用MATLAB引擎的类中也注意加入上述语句。
当完成以上述四步工作后,用户就可以在VC++中对MATLAB引擎程序进行编译和调试了。


