MATLAB 的混合编程初步课件

上传人:我*** 文档编号:143666863 上传时间:2020-09-01 格式:PPT 页数:40 大小:459.50KB
返回 下载 相关 举报
MATLAB 的混合编程初步课件_第1页
第1页 / 共40页
MATLAB 的混合编程初步课件_第2页
第2页 / 共40页
MATLAB 的混合编程初步课件_第3页
第3页 / 共40页
MATLAB 的混合编程初步课件_第4页
第4页 / 共40页
MATLAB 的混合编程初步课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《MATLAB 的混合编程初步课件》由会员分享,可在线阅读,更多相关《MATLAB 的混合编程初步课件(40页珍藏版)》请在金锄头文库上搜索。

1、MATLAB与控制系统仿真实践,第7章MATLAB 的混合编程初步,第7章 MATLAB 的混合编程初步,7.1 MATLAB 的混合编程形式简述 7.2 常用MATLAB 混合编程方法 7.2.1使用MATLAB的MATLAB Compiler 7.2.2 利用MATLAB引擎(MATLAB Engine) 7.2.3 利用ActiveX技术 7.2.4 利用mat文件 7.2.5 使用mex文件 7.2.6 利用MatrixVB实现与Visual Basic的混合编程 7.2.7 利用MATLAB Builder系列工具。 7.3MATLAB 的混合编程示例以MATLAB Builder

2、for Java应用为例 7.3.1 生成魔方矩阵的演示程序 7.3.2 输出曲线的演示程序,MATLAB的编程效率极高,但因其是解释型的语言,运行效率却相对较低。还有一个问题就是MATLAB的m文件是不能脱离应用程序环境的,这样就限制了其可移植性和通用性。针对这些问题,实现MATLAB与其它程序设计语言的混合编程就显得尤为重要。这有助于充分发挥MATLAB和其它语言各自的优势,降低开发难度,缩短开发周期,提高程序的执行效率。,7.1 MATLAB 的混合编程形式简述,通常,混合编程有以下几种形式: 1. 在MATLAB环境中调用其它语言编写的程序,以提高数据处理的效率; 2. 向MATLAB

3、环境传送数据或从MATLAB环境接收数据,实现MATLAB系统同外部环境的数据交换; 3. 在MATLAB和其它应用程序间建立客户机/服务器关系,将MATLAB作为一个计算引擎,在其它应用程序中调用,从而降低程序设计的工作量。,7.2常用MATLAB 混合编程方法,7.2.1使用MATLAB的MATLAB Compiler,编译器可以将MATLAB程序生成适用于UNIX, Windows和Macintosh平台的C和C+程序,也可生成适于Microsoft Windows的C和C+动态链接库DLLs。 可以在命令窗口使用mcc调用MATLAB Compiler,也可在命令提示符下输入deplo

4、ytool调用。,7.2.2 利用MATLAB引擎,实际应用中可以将MATLAB作为一个引擎使用,让其在后台使用,以简化前台用户程序的设计任务。MATLAB引擎函数库是MATLAB提供的一组接口函数,它允许用户在自己的应用的程序中对MATLAB函数进行调用。使用MATLAB引擎有如下典型的应用: 将MATLAB看作是功能强大的子程序库。例如,调用 MATLAB engine实现复杂的数学计算。 为一个特定任务构建一个完整的系统。如前台采用C语言实现GUI,而后台的分析处理功能完全由MATLAB完成,从而缩短开发周期。,7.2.3 利用ActiveX技术,ActiveX是一种支持组件集成的Mic

5、rosoft Windows协议。通过ActiveX可以将不同应用环境下开发的组件集成到一个应用环境中。ActiveX同时也是面向对象技术(Object-Oriented)的一种,属于基于组件对象模型(COM)的子类。COM为所有的ActiveX对象定义了对象模型,每个ActiveX对象支持一定的接口,即不同方法、属性和事件。 通过ActiveX可以在MATLAB和其它软件平台建立客户机服务器体系结构,方便彼此交互。当MATLAB控制其它ActiveX组件时,MATLAB作为一个Automation Client;当MATLAB被其它ActiveX组件控制时,MATLAB作为一个Automat

6、ion Server。换句话说,一方面可以在MATLAB环境下运行其它语言开发的ActiveX组件,一方面其它语言的程序中也可运行MATLAB的ActiveX服务组件。,(a) deploytool首界面,(b) MATLAB Compiler界面,图 deploytool操作界面,7.2.4 利用mat文件,MATLAB保存文件默认格式为mat格式,它是二进制文件。这种格式方便了不同应用程序间的数据共享。MATLAB正是通过mat格式的数据文件与其它程序进行数据交互的。例如,我们可以将计算复杂度高、编程困难的操作交由MATLAB完成,其运算结果保存为mat格式的文件,供其它应用程序使用。这样

7、,可极大减轻编程负担。,7.2.5 使用mex文件,mex(MATLAB Executable)是MATLAB的可执行程序。在Microsoft Windows下mex文件的扩展名为DLL。它可以在MATLAB下像一般的M文件执行。mex文件可以通过编译C/C+或FORTRAN源文件产生。这样,我们就可以将一部分工作交给C/C+或FORTRAN完成,只要将其编译成mex文件,供MATLAB调用即可。这种方式的优点有: 代码重用。可以将以前已有的且成熟的C/C+或FORTRAN程序,直接编译为mex文件供MATLAB调用,而无需将其转化为m文件。 提高效率。对于C/C+或FORTRAN擅长的算法

8、如循环执行交由C/C+或FORTRAN完成并编译为mex文件供MATLAB调用,以提高效率。 扩展功能。通过mex文件用户可以调用系统函数或访问硬件(如A/D或D/A等),克服MATLAB底层操作功能不足。,7.2.6 利用MatrixVB实现与Visual Basic的混合编程,MATLAB没有与Visual Basic语言的接口,但我们可以通过第三方提供的MatrixVB,利用其提供的COM组件,在Visual Basic中实现MATLAB的许多功能。 MatrixVB包含了大量与MATLAB相似的函数与和调用语法,其函数库按功能大致可分为8类(矩阵运算、运算符重载、图形图像处理、最优化处

9、理、多项式、信号处理、随机与统计分析、控制系统)。,7.2.7 利用MATLAB Builder系列工具,MATLAB提供了MATLAB Builder for Excel,MATLAB Builder for .NET,MATLAB Builder for Java一系列工具。 MATLAB Builder for Excel是MATLAB专门为Excel提供的生成器工具,它将复杂的MATLAB算法转换为独立的Excel加载宏。用户可像使用其它加载宏一样使用MATLAB算法。,MATLAB Builder for .NET目的是让用户可以在自己的应用程序中随意使用MATLAB开发的算法而无需

10、运行或安装MATLAB软件。MATLAB Builder for .NET,将MATLAB函数编译成.NET组件,任何符合CLS(Common Language Specification)的语言如VC.NET、VB.NET、C#都可以访问这些组件;也创造能够保持MATLAB 灵活性的组件,生成的COM对象可由任何兼容COM技术的程序调用,如C+,Visual Basic,ASP等。,MATLAB Builder for Java(也称作Java Builder)作为MATLAB Compiler的扩展,可以将MATLAB函数打包成一个java包。每个MATLAB函数都成为java类的一个方法

11、。这样,在Java应用程序中就可调用这些方法。在打包时生成的相应支持文件及MATLAB Component Runtime(MCR)都包含在其中。因此,使用这些java程序的用户无需购买或安装MATLAB。,7.3MATLAB Builder for Java应用,本节以MATLAB Builder for Java应用为例讲述。用户如有其它方面的混合编程需求的话,可以参考相应专门的文献。 以下示例所用环境为JBuilder 2006和MATLAB7.4(R2007a)。用户也可以采用其它JAVA环境。但对JDK版本有一定要求,不可太低。对以下示例的理解需要用户有一定Java语言基础和面向对象

12、程序设计基础。,7.3.1 生成魔方矩阵的演示程序,下面以生成魔方矩阵的示例演示如何使用MATLAB Builder for Java打包m文件,如何在Java环境下使用打包文件,完成一定功能。 1. MATLAB程序的准备 以下函数用于生成指定大小 的魔方矩阵,程序名为makesqr.m。 function y = makesqr(x) %生成指定大小的魔方矩阵 y = magic(x); 此函数要求用户输入魔方矩阵大小x,生成xx的魔方矩阵。,2. 打包M函数,生成Java程序 这个过程可以使用图形化工具deploytool (the Deployment Tool GUI),也可在命令窗

13、口使用 mcc命令。我们使用方便的图形化工具deploytool 来完成这项工作。 (1) 启动deploytool工具 在命令窗口输入: deploytool 工具的首页显示了完成整个任务的流程为:创建工程添加文件生成Java文件打包,如图7.2。下面依次进行。 (2) 新建工程 选择MATLAB Builder for Java项,并在D:javabuilder_examples目录下创建magic_eg.prj工程文件,如图7.3。,图7.2deploytool工具启动界面,图7.3 创建Java工程的首界面,(3) 给工程文件中添加待打包的.m文件 将先前编辑好的.m文件添加到类中,同

14、时类名也可以根据需要进行更改,如图7.4。,(a) 添加.m文件和更改类名窗口,(b) 添加.m文件和更改类名后的窗口,图7.4 添加.m文件和更改类名,(4) 编译设置 如果需要将所有编译信息逐行显示出来,可选Create Verbose Output。此外更重要的一点是要选择编译文件,可在SettingsCompiler Options File中输入编译文件路径。这里用到javabuilder.jar文件。它应该在MATLAB安装目录下的toolboxjavabuilderjar中。 (5) 执行打包任务 点击(Build the project),执行打包。如果任务成功,会有如下信息:

15、 ,Copying: D:javabuilder_examplesmagic_egsrcmagic_eg.jar - D:javabuilder_examplesmagic_egdistrib Copying: D:javabuilder_examplesmagic_egsrcmagic_eg.ctf - D:javabuilder_examplesmagic_egdistrib Compilation completed succesfully. The output is located in D:javabuilder_examplesmagic_egdistrib. 按照提示,我们可以

16、找到转换后生成的Java源文件及打包好的文件。它们分别存放在D:javabuilder_examplesmagic_egsrc和D:javabuilder_examplesmagic_egdistrib中。而存放在D:javabuilder_examplesmagic_egdistrib下的.jar文件即是可分发的程序。 以上各步完成了将MATLAB程序转化为Java程序的任务。将来我们可以在Java环境下导入这一程序,用来实现生成魔方矩阵的功能。,3. Java环境下调用打包文件 (1) 在JBuilder 2006中创建工程getMagic,并在工程getMagic中新建类GetMagic.java,如图7.5。 (2) 在Required Library中添加必需的.jar文件,如图7.6。这里要用到2个.jar文件,一个是刚才生成的magic_eg.jar,如图7.7,一个是MATLAB安装目录下的toolboxjavabuilderjarjavabuilder.jar,如图7.8所示。,图7.5 创建工程界面,图7.6 添加必需的.jar文件界面,图7.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号