毕业设计(论文)MATLAB与VC交互的研究与实现.doc

上传人:laozhun 文档编号:3976707 上传时间:2023-03-30 格式:DOC 页数:37 大小:1,019KB
返回 下载 相关 举报
毕业设计(论文)MATLAB与VC交互的研究与实现.doc_第1页
第1页 / 共37页
毕业设计(论文)MATLAB与VC交互的研究与实现.doc_第2页
第2页 / 共37页
毕业设计(论文)MATLAB与VC交互的研究与实现.doc_第3页
第3页 / 共37页
毕业设计(论文)MATLAB与VC交互的研究与实现.doc_第4页
第4页 / 共37页
毕业设计(论文)MATLAB与VC交互的研究与实现.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《毕业设计(论文)MATLAB与VC交互的研究与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)MATLAB与VC交互的研究与实现.doc(37页珍藏版)》请在三一办公上搜索。

1、ANYANG INSTITUTE OF TECHNOLOGY 本 科 毕 业 论 文 MATLAB与VC交互的研究与实现Reserching and Realization of MATLAB and VC interaction系(院)名称: 电子信息与电气工程学院 专业班级: 04级自动化1班 学生姓名: 指导教师姓名: 指导教师职称: 讲 师 2008年05月MATLAB与VC交互的研究与实现专业班级:04级自动化1班 学生姓名:指导教师: 职 称: 讲 师摘要:本文研究并实现了MATLAB与VC+的交互方法。该方案能充分利用MATLAB丰富的控制算法、强大的数据处理功能和VC+方便、快

2、捷、灵活的特点。作为世界顶尖的数学应用软件,以其强大的工程计算、算法研究、工程绘图、应用程序开发、数据分析和动态仿真等功能,在各个领域发挥着越来越重要的作用。而VC+语言功能丰富、使用灵活方便,目标程序效率高。其既有高级语言的优点,又有低级语言的特点。在VC+6.0中,可以方便、快捷的生成所需的DLL(动态链接库)项目, DLL项目具有很强的通用性和实用性,并且代码的运行效率高,具有开发周期短、软件容易维护等诸多优点,是一种很好的编程方法。本文充分利用VC+和MATLAB的各自优势,在VC+软件中开发用户界面、数据采集的管理程序,对于数据的计算和显示则通过图形功能强大的MATLAB程序来实现,

3、这样就可以大大提高软件执行的速度、开发效率和可靠性。本文主要实现了以下四种Matlab和C的交互的方法:(1)将Matlab程序编译成Mex文件,C或C+文件;(2)在C,C+程序中利用Matlab Engine调用Matlab函数;(3)在C,C+程序中利用Matlab C Matlab Library或MatlabC + Matlab Library调用Matlab函数;(4)利用MATCOM转化。关键词:Matlab引擎;数学库和图形库;mex mcc;MIDEVA;VCReserching and Realization of MATLAB and VC interactionAbst

4、ract: This article studied and has realized MATLAB and the VC+ interactive method. This plan can use the MATLAB rich control algorithm, the formidable data processing function and VC+ fully convenient, quick, the nimble characteristic. As the world apexs mathematics application software, by its form

5、idable functions and so on engineering calculation, algorithm research, project cartography, application procedure development, data analysis and dynamic simulation, is playing more and more vital role in each domain. But the VC+ language function is rich, use nimble convenient, the target program e

6、fficiency is high. Its both have the higher order language merit, and has the low-level language characteristic. In VC+6.0, DLL which may convenient, the quick production need (dynamic link storehouse) the project, the DLL project has the very strong versatility and the usability, and the code opera

7、ting efficiency is high, has the development cycle to be short, the software easy to maintain and so on many merits, is one very good programming method. This article uses VC+ and the MATLAB respective superiority fully, develops the user interface, the data acquisition executive program in the VC+

8、software, realizes regarding the data computation and the demonstration through the graph function formidable MATLAB procedure, like this may enhance the software execution greatly the speed, the development efficiency and the reliability. This article has mainly realized following four kind of Matl

9、ab and the C interactive method: (1) Matlab program compiling Mex document, C or C+ document; (2) transfers the Matlab function in the C, C+ procedure using Matlab Engine; (3) transfers the Matlab function in the C, C+ procedure using Matlab C Matlab Library or MatlabC + Matlab Library; (4) using th

10、e MATCOM transformation.Key words:The engine of MATLAB;The library of mathematics and graph;Mex;Mcc; MIDEVA;VC目 录摘要IABSTRACTII引言1第一章 VC和MATLAB介绍31.1 VC开发软件简介31.1.1 VISUALC+集成开发环境简介31.2 MATLAB简介41.3 动态链接库技术5第二章 VC调用MATLAB72.1 VC通过MATLAB引擎调用MATLAB72.1.1 在VC下建一个基于对话框的应用程序82.2 VC通过MATLAB库函数实现混合编程102.2.1

11、 C语言实现M文件的方法132.2.2 库函数的使用制约162.3 VC使用MATCOM(MIDEVA)调用MATLAB17第三章 MATLAB平台下调用VC203.1 MEX文件的组成及应用203.2 使用C编写MEX文件213.2.1 使用MEX文件273.3 C语言程序MEX文件实例28结论31致谢32参考文献33引 言Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件。它集数值分析、矩阵运算、信号处理图形显示甚至符号运算功能于一体,构成了一个方便、界面友好的用户环境。它还包括了有各个领域专家相继推出的工具箱,借助于这些“巨人肩上的工具”,各个层次的研

12、究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省时间。Matlab具有可扩展性、易学易用性、高效性等特点。然而Matlab自身所存在的某些缺点限制了它的应用范围。(1)Matlab以解释方式执行效率很低,这在处理图像是特别明显;(2)Matlab程序不能脱离其环境运行,因此它不能被用于开发商用软件;(3)Matlab的程序是后缀为m的脚本文件它代码的完整性和安全性,并不希望用户了解或更改核心程序;(4)其界面编写功能也过于简单,以致不能满足用户的高级需求。实际应用中,任何一个软件平台都不是万能的,MATLAB软件平台就缺少直接操作计算机硬件相关的命令与函数。对一些既要应用MATLA

13、B软件平台独特功能,又要直接操作计算机硬件,尤其是涉及到数据采集与输出控制的应用场合带来一定的不便。VisualC+已成为Windows系统平台上最强大的应用程序开发系统,因为VisualC+开发的程序文件小,执行速度快、实时性好,已成为操作系统、设备驱动程序和系统级平台类软件的最佳开发工具。Matlab由于其绘图功能强大,较之VC其语言更为简洁明了,并且生成的图形可轻松实现多种功能,诸如图形添加文字说明、缩放、旋转、坐标轴标注、曲线说明等等,这些若由VC来实现将极为复杂。因此如果把Matlab的程序加入到自己的VisualC+程序中,将大大减少编程的工作量、保证程序的准确性,并且继承这些可视

14、化变成工具良好的用户界面。对于很多的工程项目特别是在数值化计算程度高的应用程序开发中,通过二者的混合编程,即采用VC+完成框架定制和界面开发,利用Matlab强大的矩阵计算和操纵以及数值分析功能,完成核心数值计算和算法设计,实现应用程序的快速开发,而且VisualC+可以实现更多的功能,来实现用户越来越高的要求。Matlab和C的交互方式共有四种:(1)将Matlab程序编译成Mex文件,C或C+文件;(2)在C,C+程序中利用Matlab Engine调用Matlab函数;(3)在C,C+程序中利用Matlab C Matlab Library或MatlabC + Matlab Librar

15、y调用Matlab函数;(4)利用MATCOM转化。其中通过方式(1)(2)生成的程序只有在安装了Matlab系统上才能正常运行,而由方式(3)生成的程序则没有这样的要求,它能够以独立执行程序的形式运行,即使在客户没有安装Matlab系统下。用方式(4)生成的代码可读性好,支持图形函数,支持M文件编译过程中的文件嵌套情况,可脱离Matlab环境,其缺陷为待编译的M文件不能涉及Matlab的内部类。方式(3)唯一的缺点就是不能利用Matlab中丰富的图形句柄处理函数,但是对于Visual C+等开发工具而言,这不是一个很严重的问题。因此方式(3)是实现功能和效率兼顾的最好接口方法。本文将详细介绍

16、VC+和Matlab的交互的实现方法并进行简单的比较。第一章 VC和Matlab介绍1.1 VC开发软件简介二十世纪九十年代以来,伴随着计算机硬件技术的高速发展,Windows操作系统形成了垄断地位。Windows应用软件也蓬勃发展,广泛应用与各个行业,包括科研和生产制造业。对于Windows应用软件的开发,微软公司业提供了强大、复杂的开发工具VsualC+(以后简称VC+),借助其生成代码的向导,能快速生成可运行的Windows应用程序外壳框架。VC+附带的基本类库,即MFC(Microsoft Foundation classes)不同于从前进行Windows开发所用的API函数 (App

17、lieation Programming Interface),已经成为许多C+编译器进行Windows开发的行业标准。VC应用程序创建过程。 VC+开发工具包含了两个完整的Windows应用程序开发系统。一个是只使用Win32API函数来开发C+语言的Windows程序;另一个是使用MFC类库,在应用程序框架范围内的C+编程。使用MFC类库编程接口也可以直接使用一些Win32函数。本文采用了第二种方法进行应用程序开发。1.1.1 VISUALC+集成开发环境简介VC+能被成为可视化集成开发环境(IntegratedDevelopmentEnvironment,IDE)是由于在VC+中能够执行

18、如下的功能:1自动生成不用编写代码的起始框架应用程序;2通过不同的方法查看项目文件;3建立应用程序的可视界面(菜单和对话框);4编译和链接;5运行时调试应用程序。下面介绍几个VC+中的重要组件:1应用程序向导 (Appwizard)AppWizard是一个标准的C+源代码生成器。它通过一系列的对话框来提示用户输入创建程序所需的信息。然后Appwizard生成一些文件,这些文件构成应用程序框架。由Appw-izard生成的程序是一个基本的Windows程序,它创建一个带有特性、类名和源代码文件名的Windows应用程序框架,这只是一个基本框架代码扩展,用户应在此基础上完善自己的内容。2类向导(C

19、lasswizard)类向导(Classwizard)是一个交互式工具,主要进行类代码的维护。用来建立新的类、定制类、把消息映射成类成员函数,或则把控制框映射为类变量成员。在开发程序时,可以用classwizard建立程序所需要的类,包括消息处理和消息映射例程(用于定位处理消息的代码)。3资源视图 (Resourceview)资源视图 (Resourceview)包括了项目中所有的层次列表,用于编辑和管理应用程序中用到的各种可视元素,包括:快捷键、对话框、图标、菜单、字符串和工具栏等。4类视图(ClassView)类视图(classview)用于显示项目所有的类信息,主要是定制现有的类和建立新

20、的类,并在每个类中,显示了成员函数和成员变量,还可以完成添加、删除、定位的功能。5文件视图(FileView)文件视图(FileView)视图同ClassView非常相似,将项目中的所有文件(C+文件、头文件、资源文件等)以视图的形式分类显示。在视图中可以显示和编辑源文件和头文件。1.2 MATLAB简介MATLAB是由美国MathWorks公司推出的一个作为科学和工程计算而专门设计的高级交互式软件包,它是一种高性能的用于工程计算的编程软件,它把科学计算、编程和结果的可视化都集中在一个使用非常方便的环境中。MATLAB最早作为矩阵实验室 (MatrixLaboratory)用来提供与LINPA

21、CK和EISPACK矩阵软件接口的,后来,逐渐发展成为具有通用科学计算、图形交互系统和程序设计语言的国际公认最优秀科技应用软件之一。其典型的应用范围包括:数学计算、算法推导、建模和仿真、数据分析和结果的可视化、应用程序开发,包括图形用户界面的建立。MATLAB语言与其它高级语言相比编程效率高,便于用户使用,扩充能力强,语句语法简单,高效方便的矩阵和数组运算,方便的绘图功能。1数学库和函数库MATLAB提供了C/C+数学库,其中的C+数学库功能很强,使用它可以用类似MATLAB的语法编写C+程序,十分方便。虽然速度上仍然比手工C/C+程序慢,但是由此换来的高效的开发效率和可靠性往往是值得的。另外

22、mcc命令可以将.tri文件转化为C或CPP文件,编译后可以脱离MATLAB运行,它们也是使用的C/C+数学库。MATLAB数学库是专门为脱离MATLAB环境而开发的C程序库,MATLAB图形库可以提供图形界面应用程序的支持。有了MATLAB数学库和MATLAB图形库,就可以把大部分的.m文件写成的应用程序编译成可执行的exe程序,脱离MATLAB环境独立运行。当然也可以将.m文件编译成.CPP文件,添加到VC+工程中,实现VC+和MATLAB的混合编程,使应用程序同样可以脱离MATLAB环境独立运行,但不能利用MATLAB的图形句柄能力。2SIMULINK简介SIMULINK是一个可视化动态

23、系统仿真环境。一方面,它是使MATLAB的扩展,保留了所有MATLAB的函数和特性;另一方面,它又有可视化仿真和编程的特点。借助其可视化的优点,使用SIMULNK可以分析非常复杂的控制系统。在SIMULINK环境下分析和设计控制器,甚至不需要编制任何参数就可以得到希望的数据。在3.0版本,还添加了模块优先权与整合、总线模块等新的功能,为SIMULINK的应用开辟了更加广阔的前景。1.3 动态链接库技术本文在VC+程序中调用了MATLAB函数库和图形库,以实现数据的显示和MATLAB算法的调用。本节简单介绍动态链接库的相关内容。动态链接库(DLL)是包含共享函数库的二进制文件,可以被多个程序同时

24、使用。建立应用程序的可执行文件时,不必将动态链接库连接到应用程序中,而是在运动时动态装载动态链接库,装载时动态链接库被映射到调用进程的地址空间中。动态链接库中定义有两种函数:导出函数和内部函数,导出函数可以被其它的模块使用,而内部函数只能在动态链接库内部使用。动态链接是指Windows把一个模块中的函数调用链接到库模块中的实际函数上的过程。通常,动态链接发生在各种目标模块运行库文件创建Windows的EXE文件时刻。在Windows中,动态链接库是作为一个独立的模块进行编译和加载的,在应用程序执行时被动态链接。动态链接库提供了一个进程调用的方法,因为这些函数不是进程的可执行代码,函数的可执行代

25、码存在于动态链接库中,其中包括一个或多个函数而且这些函数直到进程使用时才编译链接并存在于内存中。例如,Windows的API函数就使用了动态链接库的方法。当进程开始执行时或则当进程的一个线程调用动态链接库中的函数时,动态链接库便加载到该进程上。当动态链接库加载到一个进程时,Windows便把动态链接模块映射到进程的地址空间中,使动态链接库的可执行代码在该进程中有效。而当动态链接库从进程中卸载时,动态链接库模块就收回进程地址空间中的映射。与其它函数一样,一个动态链接库函数可以在进程的任何地方执行。使用动态链接库的优点大致有:1同一个动态链接库可以被多个进程使用,只要在内存中放入它的一个副本即可,

26、所以动态链接库的使用节省了内存,减少了磁盘操作。2动态链接库与调用者相对独立,更新后只要重新编译动态链接库即可,不应用于电路系统的数据采集与控制系统实现研究影响调用者,不必重新链接调用者的各个程序。3接口被定义后,就可以编写各种版本的动态链接库以实现不同的内部功能。4可以作为进程之间共享数据的一种机制。5动态链接库中的函数可以被使用不同语言编写的程序调用,只要在调用时遵循调用规范即可。VisualC+中的MFC类库支持的三种动态链接库的开发:1动态链接MFC的Regular.DLL静态链接MFC的DLL是通过函数外部调用DLL文件,通过静态的分析得出文件的调用模型。2动态链接MFC的Regul

27、ar.DLL动态链接MFC的Regular.DLL是内部使用MFC的DLL,DLL中的导出函数可以被MFC和非MFC可执行程序调用。 3MFC扩展DLLMFC扩展DLL是从己有的MFC类派生新的可再用类的DLL。扩展DLL再建立时使用的MFC动态链接库。扩展DLL中的导出函数只能由动态链接MFC的应用程序调用。第二章 VC调用MATLAB 2.1 VC下通过MATLAB引擎调用MATLABMatlab引擎(engine)指的是Matlab提供的接口函数,通过这些接口函数,用户可以方便地在VC中调用Matlab。Matlab引擎采用的时客户机/服务器计算模式。其实质是利用ActiveX自动化和D

28、DE技术,来实现VC与Matlab之间的动态数据交换。VC作为客户端负责用户接口和提出数据请求;而Matlab则向客户端提供数据服务。VC客户端通过Matlab引擎与Matlab服务器建立连接,从而实现动态通信。具体调用过程如图2.1所示。 VC客户端MATLAB引擎MATLAB工作区MATLAB服务器 图2.1 调用Matlab引擎流程图利用MATLAB引擎具体实现算法如下:1编译环境的配置。在Matlab环境窗口运行mex setup,可以按照其提示逐步实现,最后要选择的编译器是安装在本机上的VC编译器。2运行环境设置。(1) 在VC平台上,通过菜单Tool/Options,进入Direc

29、tories,在Show directories for栏中选择includefiles,添加路径:Root matlab/extern/include和Root matlab/extern/include/cpp。(2) 在Show directories for栏中选择library files,添加Root matlab/extern/lib/win32/mincrosoft/msvc60。(3) 打开界面菜单project/settings/link,在其object/library modules栏目中加入库文件libmx lib,libeng lib,libmat lib。注意,上

30、面的(1)和(2)只需设置一次,而(3)每个步骤需要重新设置。本次的Root matlab即为C: Microsoft/Matlab60。3通过engine调用Matlab。先申明引擎指针Engine* ep,然后使用engopen函数打开引擎,最后用engclose函数关闭引擎,当引擎打开后,就可以用engEvalString等一些函数调用Matlab相关运算。2.1.1 在VC下建一个基于对话框的应用程序 Matlab引擎采用客户和服务器计算方式,在运用中,VC的C语言或C+语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,并从Matlab引擎接收数据信息,它提供了下列几个

31、函数:engOpen, engGetArray, engPutArray, engEvaString, engOutputBuffer ,engClose与客户机进行交互。 下面例程是在VC下建一个基于对话框的应用程序,在对话框中设置一个Button控件OnMatlabEngine,在对话框.cpp文件中加入”engine.h”和“math.h”头文件,下面给出部分程序清单。 void CtestmatlabDlg:OnMatlabEngine() Engine *ep; mxArray* T=NULL,*result=NULL,*mFs=NULL,*mnfft= NULL; double d

32、atax1024; char buffer1024; for(int j=0;j1024;j+)/注:如通过采集卡采集数据可将采集的数据放在datax数组中,此循环就不需要 double samt=(double)(1.0/1024); dataxj=sin(2.0*63.0*samt*3.1415926+1.15*3.1415926); double *pPxx,*pFxx; if(!(ep=engOpen( 0)/打开Matlab引擎,建立与本地Matlab的连接 fprintf(stderr,n Cant start MATLAB enginen); exit(-1); double F

33、s1=1024;/因为Matlab所有参与运算的参数都是矩阵的形式,因而下列几行将参数转变 double nfft1=1024;/成Matlab可接受的矩阵形式。 T=mxCreateDoubleMatrix(1,1024,mxREAL); mnfft=mxCreateDoubleMatrix(1,1,mxREAL); mFs=mxCreateDoubleMatrix(1,1,mxREAL); mxSetName(T,T); mxSetName(mnfft,mnfft); mxSetName(mFs,mFs); memcpy(char*)mxGetPr(T),(char*)datax, 102

34、4*sizeof(double); memcpy(char*)mxGetPr(mnfft),(char*)nfft, sizeof(double); memcpy(char*)mxGetPr(mFs),(char*)Fs,1*sizeof(double); engPutArray(ep,T); /将转化的参数放入引擎中,此时可在Matlab command窗口下查看此参数 engPutArray(ep,mnfft); engPutArray(ep,mFs); engEvalString(ep,pxx,fo=psd(T,mnfft,mFs);); /利用引擎执行工具箱中文件 engOutputB

35、uffer(ep,buffer,512); /如只想看显示图形,可将返回参数去掉,psd无返回参数缺省情况下会自动画图形 result=engGetArray(ep,pxx);/取出引擎中的数据放在所指的区域中供后续处理 pPxx=mxGetPr(result); result=engGetArray(ep,fo); pFxx=mxGetPr(result); engEvalString(ep,plot(fo,10*log10(pxx););/利用引擎画图 engEvalString(ep,title(功率谱分析);); engEvalString(ep,xlabel(Hz);); engEv

36、alString(ep,ylable(db);); mxDestroyArray(T); /释放内存 mxDestroyArray(mFs); mxDestroyArray(mnfft); mxDestroyArray(result); engEvalString(ep,close;); engClose(ep); 上述程序在VC下编译需要将libeng.dll和libmx.dll两个动态库利用以下的命令: lib/def:e: Matlabexterninclude*.def/machine:ix86/out:*.lib来生成程序所需的静态连接库libeng.lib和libmx.lib,将l

37、ibeng.lib和libmx.lib所在的目录加入VC+ project/link/object/library modules下即可。经试验调出的图形如下:2.2 VC通过MATLAB库函数实现混合编程 MATLAB提供了C/C+数学库,其中的C+数学库功能很强,使用它可以用类似MATLAB的语法编写C+程序,十分方便。虽然速度上仍然比手工C/C+程序慢,但是由此换来的高效的开发效率和可靠性往往是值得的。另外mcc命令可以将M文件转化为C或CPP文件,编译后可以脱离MATLAB运行,它们也是使用的C/C+数学库。MATLAB数学库是专门为脱离MATLAB环境而开发的C/C+程序库,MATL

38、AB图形库可以提供图形界面应用程序的支持。MATLAB数学库和MATLAB图形库,就可以把大部分的.m文件写成的应用程序编译成可执行的exe程序,脱离MATLAB环境独立运行了,当然也可以将.m文件编译成C+程序,添加到VC的工程中,实现VC和MATLAB的混合编程,使应用程序同样可以脱离MATLAB环境独立运行的。图2.2展示了如何在VC中利用MATLAB数学库和图形库开发独立运行应用在Matlab下编写.m文件 利用mcc编译.m文件生成相应的.cpp,.hpp文件在VC工程中插入.cpp,.hpp文件在工程中进行matlab图形库和数学库的初始化设置和关闭编写调用matlab功能函数的程

39、序在VC中进行编译环境设置编译,连接,运行 图2.2 在VC中利用MALAB开发独立运行的应用程序流程图1编写MATLAB的.m函数文件原函数文件.test.m,该函数生成一个正弦函数的信号,并对一维信号进行余弦变换,得到其变换系数,最后以将信号和变换系数在图形窗口中显示。函数的入口参数n为产生离散正弦函数信号的采样点数。function test ( n )if isstr ( n )n = str2num ( n ) ;endsignal = sin ( 1: n /n*(16* pi) ) ; %产生一个正弦函数的信号signal subplot (211) ; plot ( signa

40、l) ;coff_dct = dct ( signal) ; %对信号signal进行DCT变换,得变换系数subplot (212) ; plot ( coff_dct) ;2利用mcc编译.m文件在MATLAB利用mcc编译test.m函数文件,产生test.cpp,subplot.cpp,dct.cpp,test.hpp, subplot1hpp,dct1hpp等文件。编译命令为mcc2B、sglcpp、test参数“-Bsglcpp”含义是将.m文件编译成为C+代码,提供图形库支持,并编译为独立运行的exe程序。3在工程中插入.cpp,.hpp文件利用MFCWizard(exe)建立一

41、个名为SglMFC的工程。将上面生成的test.cpp,subplot.cpp, dct.cpp,test.hpp,subplot.hpp,dct.hpp文件移到SglMFC工程目录下,并分别插入到该工程中,若产生了其它的.cpp,.hpp也应同理插入到工程中。4在工程中进行MATLAB数学库和函数库的初始化设置和关闭在CmainFrame的构造函数进行Matlab数学库和图形库的初始化设置,在析构函数中进行C+函数库和图形库的关闭设置,在MainFrame.cpp文件中包含三个头文件。#include“stdafx. h”#include“matlab. hpp”#include“test.

42、 hpp” / / test是利用mcc生成的文件CmainFrame: : CmainFrame ( ) libmmfile Initialize ( ) ; / /初始化Matlab数学库libmwsglm Initialize ( ) ; / /初始化Matlab图形库mlfHGInitialize (NULL,NULL) ;CmainFrame: : CmainFrame ( ) mlfHGWaitForFiguresToDie ( ) ;mlfHGTerminate ( ) ;libmmfileTerminate ( ) ; / /关闭Matlab数学库libmwsglmTermin

43、ate ( ) ; / /关闭Matlab图形库5编写调用MATLAB功能函数的程序在工程中插入一个顶层菜单SHOW,在该菜单下插入一个下拉式菜单项CallMatalb,并指定其ID为ID _SHOW _CALLMATLAB。利用ClassWizard生成该菜单的消息处理函数:void CmainFrame: :OnShowCallmatlab ( ) mwArray n; / /定义mwArray变量n,作为参数传递给函数test n = 64;test ( n) ; / /调用test函数6在VC中进行编译环境设置(1)选择菜单Tools Options,选择Directories属性页,

44、添加头文件搜索路径和库文件搜索路径,本文的头文件搜索路径和库文件搜索路径如下:F:matlab62 extern includeF:matlab62 extern include cppF:matlab62 extern lib win32F:matlab62 extern lib win32 microsoftmsvc60(2) 选择菜单Project,Settings,打开工程设置对话框,在C/C+属性页中选择Category为General,在Preprocessordefinitions编辑框添加三个字符串MSVC,IBMPC,MSWIND。(3) 在C/C+属性页内,在Categor

45、y为PrecompiledHeaders选择Automaticuse of precom -piledheaders,在Throughheader编辑框中,输入stdafxh。(4) 在C/C+属性页内,选择Category为CodeGeneration,在Use run - time library列表框中,选择DebugMultithreaded DLL。(5) 在Link属性页中,选择Category为Input,在Object/ library modules编辑框,添加如下的7个库文件:libmmfile. lib, libmatlb. lib,libmx. lib, libmat.

46、 lib,libmatpm. lib sgl.lib,libmw. sglm. lib。7在VC环境中编译,连接,运行。2.2.1 C语言实现M文件的方法在MATLAB当中,利用M文件来实现函数,每一个M文件实现一个单独的功能,和C语言当中的函数是相互对应的。所以,将MATLAB中的M文件转化为C语言下的一个单个函数,能实现MATLAB中相应的功能。实现方法:整个过程可分为三个主要部分,用MATLAB将M文件翻译为C语言文件,从生成的C语言文件提取出有用语句,编写数据转换程序实现参数格式转换。整个过程最终将把M文件翻译成C语言当中的一个具有相同功能的函数,供其它的程序调用。 (1)将M文件编译

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号