VC6.0与 matlab 接口(方法).ppt
《VC6.0与 matlab 接口(方法).ppt》由会员分享,可在线阅读,更多相关《VC6.0与 matlab 接口(方法).ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常用数学软件选讲常用数学软件选讲VC与与Matlab接口编程接口编程 如果在CC+语言中能用MATLAB那么简单的代码来实现该功能就可以大大减少工作量,VC和MATLAB接口就是做这个工作的。利用MATLAB的编译工具将m文件方便的转化为CC+语言、可执行程序(exe)、动态连接库文件(dll)、COM组件等等,并可直接供CC+语言调用,利用VC和MATLAB接口技术可以在VC中充分发挥MATLAB的数值计算功能,并且可以不依赖MATLAB软件运行。我们在编写程序时,可以在VC下做出很漂亮的界面,而把复杂的数值处理交给MATLAB去做(实际上MATLAB也能做界面GUI(Graphic Use
2、r Interface),而且做出的界面并不比VC逊色,但是需要MATLAB软件作为后台运行,如果不依赖MATLAB软件运行的话,可以在VC中调用GUI),然后通过接口技术将MATLAB集成到VC中,这样可以大大减轻编程的负担,并减少程序编写时间。2VC与与Matlab接口编程接口编程 Matlab Engine方式Matlab CC+函数库(7.0后不建议使用,略)Matlab自带的Matlab Compiler Matcom技术技术 COM组件接口方法组件接口方法(Visual C+6.0 Matlab 6.5)3Matlab Engine方式方式 Matlab Engine是指一组Mat
3、lab提供的接口函数,支持C语言,Matlab Engine采用C/S(客户机/服务器)模式,Matlab作为后台服务器,而C程序作为前台客户机,通过Windows的动态控件与服务器通信,向Matlab Engine传递命令和数据信息,从Matlab Engine接受数据信息。用户可以在前台应用程序中调用这些接口函数,实现对Matlab Engine的控制。采用这种方法几乎能利用Matlab全部功能,但是需要在机器上安装Matlab软件,而且执行效率低,因此在实际应用中不采用这种方法,在软件开发中也不可行,适合个人使用或做演示用。4Matlab自带的Matlab Compiler Matlab
4、 Compiler的作用是将m文件转化成C/C+代码(也就是通常所用的mcc命令),这种源代码需要用C/C+编译器编译连接成独立应用程序,在将m文件转成独立应用程序的过程中生成的C/C+文件,原则上是可以被其它的C/C+代码调用的,编译器可以通过设置mcc命令的选项,将m文件编译成动态链接库文件、C/C+文件、可执行文件等一系列文件。到matlab R12.1为止,Matlab Compiler的m程序转换成C/C+代码功能有很多限制:1.不能转换脚本m文件,只能转换m函数;2.不能使用matlab对象;3.不能用input或者eval操作matlab空间变量;4.不能动态地命名变量,然后用l
5、oad或者save命令来操作;5.不能处理具有嵌套调用其他m文件的m文件;6.不能使用MATLAB内联函数;51、必须保证编译器的正确配置,因为编译器使用了、必须保证编译器的正确配置,因为编译器使用了CC+库函数,所以在使用前需要使库函数,所以在使用前需要使用用mex-setup 和和mbuild-setup两个命令对编译器进行配置,两个命令对编译器进行配置,如果以前已经进行了配置就不如果以前已经进行了配置就不需要这一步。需要这一步。动态链接库方式6mbuild-setup782、设置头文件和库文件的路径,配置完成如图、设置头文件和库文件的路径,配置完成如图1和图和图2 93、在、在MATLA
6、B打开文本编辑器打开文本编辑器(File-New-M-file)写一个简单的写一个简单的m函数:函数:function y=huatu_test()x=-10:0.1:10;y=sin(x);plot(x,y,*)文件保存为文件保存为huatu_test.m。4、在、在MATLAB命令窗口用如下命令生成命令窗口用如下命令生成dll文件和调用文件和调用dll所需要的文件:所需要的文件:mcc-t-W libhg:dlltest-T link:lib-h libmmfile.mlib huatu_test.m 生成的文件将会保存在当前目录下,默认的当前目录为:生成的文件将会保存在当前目录下,默认的
7、当前目录为:MATLAB根目录根目录work,找到,找到dlltest.h、dlltest.lib和和dlltest.dll文件,这三个文件是我们需要文件,这三个文件是我们需要的。的。5、在、在VC中新建一个名为中新建一个名为ceshi基于对话框的工程,在工程中添加一个名为基于对话框的工程,在工程中添加一个名为测试测试的的button按钮。将按钮。将dlltest.h、dlltest.lib和和dlltest.dll文件拷贝到当前工文件拷贝到当前工程目录下,并通过程目录下,并通过Project-Add To Project-Files 选择拷贝到当前目录下选择拷贝到当前目录下的三个文件,将文件
8、引入工程。的三个文件,将文件引入工程。106、在、在ceshiDlg.cpp文件中添加头文件文件中添加头文件dlltest.h#include dlltest.h 打开打开dlltest.h文件,里面有有关函数的定义,找到其中三个函文件,里面有有关函数的定义,找到其中三个函数:数:extern mxArray*mlfHuatu_test(void);extern void dlltestInitialize(void);extern void dlltestTerminate(void);从函数意思不难知道它们的作用,从函数意思不难知道它们的作用,dlltestInitialize用来初始化用
9、来初始化dll库,库,dlltestTerminate用来结束调用用来结束调用dll,mlfHuatu_test为主为主程序执行函数。将三个函数拷贝到程序执行函数。将三个函数拷贝到button响应代码中,进行修响应代码中,进行修改:改:void CCeshiDlg:OnButton1()dlltestInitialize();mlfHuatu_test();dlltestTerminate();11编译、执行程序,点击结果如图 12可以看出,相比可以看出,相比VC编写编写dll文件,利用文件,利用MATLAB 编译器生成编译器生成dll文文件,以及在件,以及在VC中调用该中调用该dll文件要方
10、便和简单的多。利用编译器文件要方便和简单的多。利用编译器还可以根据需要生成还可以根据需要生成CC+源文件,可执行文件等。源文件,可执行文件等。MATLAB6.5的编译器为的编译器为3.0版本,版本,MATLAB7.0的编译器为的编译器为4.0版版本,本,4.0版本的编译器对原编译器进行了很多改进,版本的编译器对原编译器进行了很多改进,3.0很多方法很多方法都不再使用,上述方法如果在都不再使用,上述方法如果在7.0版本上使用会出现错误。版本上使用会出现错误。利用利用mcc命令,通过不同的参数设置可以生成不同的文件,例如:命令,通过不同的参数设置可以生成不同的文件,例如:mcc-B sgl myf
11、un 将将myfun.m文件生成对应的文件生成对应的c文件和使用文件和使用c图图形库的可执行程序形库的可执行程序 mcc-B sglcpp myfun 将将myfun.m文件生成文件生成相应的相应的c+文件和使用文件和使用c+图形库的可执行程序图形库的可执行程序(如果自己编写的程序图形不能显示菜单栏和工具栏如果自己编写的程序图形不能显示菜单栏和工具栏,拷贝文件夹拷贝文件夹bin到当前目录下到当前目录下)13利用编译器将利用编译器将m文件转换成对应的文件转换成对应的CC+文件文件,并在并在VC中调用中调用 首先要保证编译器设置正确,编译器的设置可以参考前面两节的内容。如首先要保证编译器设置正确,
12、编译器的设置可以参考前面两节的内容。如果以前已经进行了配置就不需要这一步。果以前已经进行了配置就不需要这一步。1、在、在MATLAB中编写如下函数:中编写如下函数:function x=gjfcz(A,b)%A=-1.5 1 2;4 2 3;-3 2 8%b=3;5;6 x=Ab 保存名为保存名为gjfcz.m,该函数的功能为求解线形方程组。,该函数的功能为求解线形方程组。2、在、在MATLAB的命令窗口输入以下命令:的命令窗口输入以下命令:mcc-m gjfcz.m该命令用来生成对应的该命令用来生成对应的C文件和可执行程序。在文件和可执行程序。在MATLAB工作目录下工作目录下(一一般是般是
13、MATLABwork)将会生成如下文件:将会生成如下文件:gjfcz.exe,gjfcz.c,gjfcz.h,gjfcz_main.c,其中,其中gjfcz.c,gjfcz.h是我们需要的文件。是我们需要的文件。14Matcom 简介简介这是个第三方控件,很小这是个第三方控件,很小(8M多多),原本属于原本属于mathtool公司,后公司,后来被来被Mathworks公司合并了,使用该工具可以将公司合并了,使用该工具可以将m脚本文脚本文件和件和m函数转化成相同功能的函数转化成相同功能的CC+文件,相比其它方法文件,相比其它方法使用使用matcom具有如下优点:具有如下优点:1.转换过程简单转换
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC6.0与 matlab 接口方法 VC6 接口 方法
限制150内