1MATLAB与VC混合编程实习指导书5目录第一部分序言----------------------------------------------------------------3第二部分Matlab的可视化功能简介------------------------------------42.1、Matlab的可视化功能简介---------------------------------------42.2、Matlab的可视化功能实现----------------------------------------8第三部分使用Matcom进行混合编程---------------------------------193.1、Matcom的简介----------------------------------------------------193.1.1、Matlab与VC混合编程的实现方法--------------------193.1.2、Matcom的简介---------------------------------------------203.2、Matcom的安装----------------------------------------------------213.3、VisualMatcom开发环境的配置-------------------------------233.3.1、VisualMatcom开发环境的配置(一)---------------233.3.2、VC与Matcom解线性方程组对比---------------------233.3.3、VisualMatcom开发环境的配置(二)---------------263.3.4、VisualMatcom开发环境的配置(三)---------------273.3.5、VisualMatcom开发环境的配置(四)---------------293.3.6、MatcomC++矩阵库的矩阵类Mm-------------------293.4、Matcom的应用实例---------------------------------------------333.4.1、实例1Mm矩阵的创建及使用-----------------------333.4.2、实例2VC中调用Matlab函数画图----------------3623.4.3、MatcomC++矩阵库的图形和图像显示功能---------393.4.4、实例3图形绘制的基本功能演示----------------------413.3.5、实例4利用Matcom绘制动态曲线-------------------453.3.6、实例5Matcom二维和三维曲线绘制综合应用----57第四部分使用其他方式进行混合编程---------------------------------714.1、MatlabCOM接口混合编程----------------------------------714.2、在VC++中调用MatlabEngine编程-----------------------784.3、MatlabEngineAPI介绍---------------------------------------813第一部分序言在我学习《数学实验》这门课的时候,对Matlab强大的科学计算功能深深佩服,但是觉得Matlab可视化编程太繁杂了(我的数学实验作业就是用Matlab写了一个可视化程序,见后),于是乎我就想到用VC++来做应用程序的界面,而用Matlab来实现应用程序的功能,这样在VC中就不用再写复杂的算法了,在Matlab中也就不用再为复杂的可视化而烦恼了,所以此时我就萌生一种想法,何不来一个Matlab与VC进行混合编程的研究呢?而在此时,正赶上学校遴选创新人才,所以我就把Matlab与VC混合编程的课题研究作为我的一个创新点,在这个创新课题的研究中,得到讲授《数学实验》这门课的老师沈远彤老师的大力支持,在此非常感谢老师的栽培与信任。由于个人能力有限和时间紧迫,我个人也没能够深入地研究,所以这本实习指导书的内容比较简略,本书的资料大多来源于互联网。最后衷心希望有想往这个方向发展的同学能够在我的基础上有更好的发展!4第二部分Matlab的可视化功能简介MATLAB自1984年由美国MathWorks公司推向市场以来,已成为全球公认的科学应用软件,已被从事科学研究、工程计算的广大科技工作者。高校师生确认为必须掌握的计算工具,是从理论通向实际的桥梁,也是最可信赖的科技资源之一。Matlab除了强大的科学计算功能以外,可视化功能也是其一大特色。现在,市面上流行着许多可以实现可视化的软件,比如:3Dmax、flash等等,都可以做出多彩、万变的图形和动画效果。但是,这些软件仅仅是对现成的图形做一些处理和变化。而Matlab作为一种“数学家软件”,数学专用软件,它的可视化功能也是和数密不可分的。Matlab的可视化是数据的可视化,是基于数学的运算和逻辑的。它是由数值、数据、函数等数学元素产生图形和动画等可视化效果,图形等根据数的变化而变化,故而可以通过数值、逻辑、运算的改变而轻松改变可视化效果。同样,通过Matlab的可视化效果,可以从一堆杂乱的离散数据中去观察和发现数据间的关系,感受由图形所传递的数据间的内在本质,直观的去理解数。Matlab的这种图与数之间的相辅相成的关系,极大的方便了科学研究,这也是Matlab之所以获得广大科技工作者以及高校师生喜欢和认可的重要因素。2.1Matlab的可视化功能简介为了实现Matlab的可视化功能,它提供了很丰富的作图函数和图形处理指令,理解和掌握了这些函数和指令,我们就可以去实现Matlab多样的可视化功能。这些函数和指令一般是Matlab的“高层”指令,例如:plot、comet、movie等。这种指令,形态和格式比较友善,易于理解和应用。一、句柄图形体系——可视化的基础Matlab的一些图形处理函数都是Matlab的“高层”指令,而这些“高层”指令都是由Matlab的“低层”图形函数写成的,或以M函数的形式,或以内装函数的形式。所以,为了更深入理解高层绘图指令,绘出更精细、更生动、更个性的图形,利用低层作图函数和图形对象属性开发专用绘图函数,作出更人性化的可视化作品,我们将详细介绍Matlab的这些“低层”图形函数,即句柄图形体系。所谓句柄图形,就是一组“低层”图形函数的名称,是一种面向对象的绘图系统。它深入Matlab可视化功能的内核,可以提供创建计算机图形所必须的各种软件,它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面等基本的图形对象。低层的函数指令使用起来,不像“高层”指令那样数学概念清晰,调用格式简明易懂。但低层函数指令直接操作基本绘图要素(Basicdrawingelements),可更细致、更具个性地表现图形,更自然、贴切地展现应用场合地物理意义。句柄图形的基本思想是:Matlab的每一个可视部分就是一个对象,每个对象都有一个相应的唯一的标识符或者句柄,并且每个对象都有一组可以根据需要进行修改的属性,Matlab句柄图形的这一基本思想就是它实现可视化功能的基本方法和重要原则。首先,介绍一下句柄图形的几个重要概念,也就是在句柄图形的基本思想中提到的几个概念。1、对象:(即图形对象)Matlab把用于数据可视和界面制作的基本绘图要素称为句柄图形对象(Handlegraphicsobject),比如:线、面、控件、坐标轴等。一个图形对象就是一个可以被单独处理的单位,可以被独立的操作。Matlab的可视化的实现实际上就是对对象进行操作处理完成的。5图形命令所创建的都是图形对象,包括有图形窗口或者仅包括图形,以及坐标轴、线、表面、文本等。在Matlab中生成的每个具体图形都由若干不同对象构成,每个具体图形不必包含全部对象,但每个对象必须具备根屏幕和图形窗(简称图)。在句柄图形体系中,各图形对象并不平等,他们之间的关系可用以下树结构层次(Tree-structurednierarchy)表示:对象是句柄图形的基础和关键,后面将后面介绍各种对象。2、对象句柄:每个具体对象都有一个“与生俱来、终生不变”的独特身份,即句柄(handle),是一个双精度数。句柄是存取图形对象的唯一规范识别符,不同对象的句柄不可能重复和混淆。每台计算机,根对象只有一个,即屏幕,它的句柄总是数字0;而简称为图的图形窗口(figurewindows)的句柄总是正整数,它用来标识图形窗的序号。注意:对根屏幕、图对象来说,数字可以直接作为调用对象的句柄,但不要企图通过直接输入双精度数,作为其他对象的句柄。这些对象的句柄只能由相关指令运行而得。如:h_ax=gca就返回当前图形中当前坐标系(axis)的句柄。3、对象属性:“每个对象都有一组可以根据需要进行修改的属性”,这些属性由属性名以及相应的属性值构成,定义了对象的特征,通过设置、修改这些属性,用户可以根据需要灵活地改变、调整图形对象显示的方式。有的属性名比较“大众化”,在所有的对象中都能见到(由下面表中列出),而与每个对象类型(如:线、面等)相关的属性都是唯一的。对象可以包含很多属性,例如:对象的位置、大小、颜色等等。对对象的操作,实际上就是对对象属性的操作。每个不同的对象都有其自身独立的属性,这就保证了在用户改变这些属性时,不会改变其它同类型的对象的属性。6在生成一个对象的时候,其初始化属性值就是默认属性值。这些属性值可以在生成对象时同时设置,例如:语句hf_1=figure(‘color’,’r’),生成一个图形窗口对象,颜色为红色,将句柄赋予hf_1。也可以在对象生成后再修改它的属性值。4、get语句和set语句—-句柄图形的基本语句在对象生成后再查看和修改它的属性值,函数inspest提供了相应的图形用户界面,只需输入inspest(H),就可以打开一个图形用户界面,其中H是要查看和修改的对象的句柄,这种方法比较直观,易懂,这里不做详细介绍。现在介绍另外一种查看和修改对象属性的方式,get语句和set语句。get语句和set语句被用来获得和修改句柄图形对象的属性。get语句返回对象的一个和多个属性的当前值,最常用的调用语法为:get(handle,'propertyname’)例:p=get(hf_1,’position’)返回句柄为hf_1的图形对象的位置向量。set语句改变句柄图形对象的属性值,其语法为:set(handle,’propertyname1’,’propertyvalue1’,’propertyname2’,’propertyvalue2’……)例:set(hf_1,’color’,’r’)将句柄为hf_1的图形对象的颜色改为红色。Matlab的可视化实际上是以对对象的操作所实现的,而对象的操作又是对对象属性的操作,故而有了get语句和set语句就基本可以实现Matlab的可视化。get语句和set语句的运用非常简单易学,但要做出出色、人性化、多变的作品,就需要灵活、熟练地运用这两个语句,并结合Matlab的其他语法结构,加上清晰的数学思路来实现,这也不难做到。二、图形对象—可视化操作的基本单位图形对象不但是可视化操作的基本单位,也是组成图形作品的基本单位,因此,我们有必要将图形对象作以简要介绍。各种对象及其关系的在第二部分已经列出,简要介绍如下:根屏幕(root):“根屏幕”对应于计算机屏幕,它不需要创建,但可以设置属性值。其它图形对象都是该对象的“子”。图形窗(figure):图形窗是显示图形的窗口,“根屏幕”下可以有多个图形窗,但只有一个是当前窗口。控件(Uicontrol):图形窗下的控件主要包括:按钮,列表框,文件框,滑块等,它是人机交互界面。菜单(Uimenu):图形窗下的菜单是下拉式菜单,它是调用子程序的按钮。轴(