MATLAB与C语言接口 毕业论文.doc
《MATLAB与C语言接口 毕业论文.doc》由会员分享,可在线阅读,更多相关《MATLAB与C语言接口 毕业论文.doc(53页珍藏版)》请在三一文库上搜索。
1、MATLAB与C语言接口目 录摘 要 1第一章 绪论21.1 MATLAB与C语言接口编程的好处21.1.1提高效率,突破瓶颈 21.1.2继承宝贵财富21.1.3优势互补 21.1.4编译器功能 31.2 本文特点和框架3第二章 编译器32.1 MEX文件的编译-MEX指令32.2 建立 MEX环境 52.2.1 Lcc编译器MATLAB环境配置 52.2.2 VC+编译器MATLAB环境配置 72.3用MATLAB插件在VC环境中编写编译链接C MEX函数 72.31 MATLAB插件在MSVC环境中的配置72.3.2 C MEX函数的编写编译链接过程示例102.4编译器的其他功能14第三
2、章 MATLAB对C语言的调用MEX文件 153.1关与MEX文件 153.1.1 MEX文件的帮助信息153.1.2 mex库函数和mx库函数163.1.3mxArray结构体163.2MEX文件的组成和参数163.3编写C MEX函数的基本流程163.4MEX文件的例子203.4.1 Fibonacci数列MEX文件对C文件的调用203.4.2气泡法排序213.4.3 MATLAB的自带程序yprime 233.4.4MATLAB的另一自带示例程序- mexeval.c25第四章 C对MATLAB的调用-MATLAB计算引擎264.1关于引擎函数和引擎库264.2引擎函数调用格式264.3
3、 C程序调用引擎函数示例264.3.1 一个简单的引擎函数264.3.2 MATLAB自带的C示例程序28第五章 数据交互-MAT文件315.1关于MAT文件和MAT库函数315.2 MAT文件的组成315.3 MAT文件的编译325.4 MAT文件的例子325.4.1一个存储C程序结果MAT文件的创建函数325.4.2创建C MAT 文件的例子345.4.3读取MAT文件的例子38第六章 结束语 42附录1 MEX命令参数43附录2 Mx库函数43附录3 mex函数库47附录4 C 引擎库函数 47附录5 C MAT-File 库函数48参考文献49致谢 5050 摘 要MATLAB是一个功
4、能完善的程序设计和数据处理的软件,是一个完全独立的系统. MATLAB系统也是一个扩充的系统,MATLAB提供了接口:对用其他编程语言书写的外部程序,需要与外部程序共享的数据,等等。大多数的这些接口性能是以前在MATLAB应用程序接口,或API的标题之下涉及到的。本文介绍了MATLAB和C语言之间的接口,并通过例子,使得读者能够轻松的了解这种接口。本文主要介绍的内容包括:1) MEX文件,使可以在MATLAB环境下直接调用C语言编写的程序段。这样子能实现现有代码重用,有效利用前人留给我们已经编好的C程序这是一笔宝贵的财富。2) MATLAB计算引擎,在C语言中直接使用MATLAB的内置函数。我
5、们将MATLAB当成一个计算引擎(ComputingEngine),并从程序调用此MATLAB引擎,进行MATLAB的各种运算或图形显示。3) MAT文件,实现MATLAB于C语言程序间的数据交换。在介绍了MATLAB与C语言之间的接口的一般理论后,文章通过丰富的例子说明接口的好处和必要性,调用的过程中应注意的问题:编译该注意的地方、调用格式等等。关键词:MATLAB C语言 接口 ABSTRACTMALTAB is a software of perfect function programming and data processing, which is a fully independ
6、ent system. MATLAB is also an open-ended system and provides interfaces to external routines written in other programming languages, data that needs to be shared with external routines, and so on. Much of this interface capability was formerly referred to under the title of the MATLAB Application Pr
7、ogram Interface(API). This paper introduces the external interfaces of the MATLAB and C language, you can understand it easily through the examples. The main topics included are:1) MEX files, which are the routines called the program by c language in the MATLAB. In this case, we can reuse the existi
8、ng code,and use the C program segment which has been wrote-this is a precious fortune.2)MATLAB engine, which are the inline functions of the MATLAB and can be used in the c language. We regard the MATLAB as a Computing Engine, and we call this MATLAB Engine to run all kinds of operation and graphica
9、l display.3) MAT files, which exchange data between MATLAB and c language. After introducing the general theory of interface between MATLAB and C program, this article explain the advantage and necessity of the interface, the problem should be attentive in the calling process, the place should be at
10、tentive in the compiling process, the calling format and so on.Key words:MATLAB; C language; Interface 第一章 绪论MATLAB系统是一个功能完善的程序设计和数据处理的集成环境,使用它所提供的功能、内建函数以及大量的工具箱,几乎可以完成所有的任务,并且无需借助外界的帮助,是一个完全独立的系统。MATLAB系统更是一个友好的系统,MATLAB提供了功能完整的应用程序接口(ApplicationProgramInterface简称API)来和外部程序或其他程序语言沟通,只要遵循MATLABAPI的
11、标准,可以实现以下几项接口工作:1)从MATLAB调用以C语言编写的函数;2)将MATLAB当成一个计算引擎(CompteringEngine),并从程序调用此MATLAB引擎,进行MATLAB的各种运算或图形显示;3)以C程序读写MATLAB专用的MAT文件。当然,MATLAB与其他语言之间的接口和相当丰富和完善,例如从MATLAB调用以Fortran语言编写的函数;从Fortran程序调用MATLAB引擎;以Fortran程序读写MATLAB专用的 文件;MATLAB与微软程序(Excel或Access)之间的交互;MATLAB与Java之间的接口等等3。但是,这些都不是本文讨论的内容,本
12、文要讨论的是MATALB与C语言之间的相互调用,主要讨论点就是上述三点。1.1 MATLAB与C语言接口编程的好处MATLAB是一个功能强大的软件,但是有了与其他语言之间的接口,MATLAB的功能更加的完善,因为应用接口编程,有诸多好处:1)提高MATLA的执行效率,解决 语言运算速度的瓶颈;2)充分的利用前人留下的已经被实践证明稳定有效的C程序,继承这笔宝贵的财富;3)实现MATLAB与C语言之间的优势互补;4)利用编译器,可以实现隐藏代码,生成独立应用和M文件到C文件的自动转化,满足不同的人的不同需求。1.1.1提高效率,突破瓶颈当使用 MATLAB进行大规模的数据处理时,MATLAB无法
13、避免使用for循环或while循环,由于MATLAB本身对于循环执行效率较低,会出现运算速度的瓶颈。通过C语言编写 MEX文件,然后在MATLAB中调用,从而大大地提高数据处理效率。有人以移动通信中误码率的统计作一个运算速率的分析与比较,文件的运算速率是M文件的运算度的300倍3。1.1.2继承宝贵财富语言已经有着广泛的应用,有大量的程序代码,如卷积编码,卷积解码,Turbo编码,Turbo解码等等,可将其作为计算子程序,通过C MEX函数的接口程mexFunction 函数生成C MEX文件,可以在MATLAB系统中如调用MATLAB的内建函数一样调用生成的C MEX文件,从而使资源得到充分
14、利用,避免重复的算法设计工作。从本文中的MEX文件也能很容易的体会到这一点,参见文中的其他例子。1.1.3优势互补例如C语言调用MATLAB引擎,弥补C语言在计算,画图等方面的不足;有时候C语言对某些字符处理方便,能弥补MATLAB在这方面的不足,从文章中给出的例子,我们很容易体会到这点。1.1.4编译器功能的源代码经过编译后,已变成二进制的代码,虽然MATLAB能够调用它,但使用者无法看到源程序代码了。因此,采用 文件的形式,就可以隐藏程序代码,达到保护知识产权的目的3。用mcc函数就可以实现M文件到C文件的转化,甚至是二进制的文件。并且利用编译器还能构生成独立的可执行程序,可以脱离MATL
15、AB的执行环境。1.2 本文特点和框架 作为计算机语言,在使用的时候都有一套自己特定的语法,MATLAB与C语言之间的接口也不例外。本文没有涉及太过复杂的理论知识和应用举例(而且限于篇幅,也不能这么做),只是在介绍了基本的理论知识的准备之后,通过一些简单易懂的举例,来说明MATLAB与C语言之间调用的格式,使得有了MATLAB和C语言基础的读者能够轻松易懂的了解这种调用,力求达到深入浅出的效果。 本文总共分为六章。第一章,绪论,介绍了MATLAB和C语言之间接口调用的好处和本文的特点。第二章,是对MATLAB与C语言之间调用的概述和基本理论知识的准备。第三,四,五章,分别详细介绍了MATLAB
16、调用C语言中的MEX文件,计算引擎和MAT文件的程序的组成结构、编译方法、注意事项等等,是这片文章的主要部分。第六章,是结束语。第二章 编译器一个C MEX文件在编写好了以后,还要进行编译和链接生成.dll文件以后,才能最终调运和执行。本章主要对C MEX文件的编写、编译、链接的过程进行讨论,举一反三,MAT文件和以MATLAB为计算引擎的C函数的编写、编译、链接的过程类似。2.1 MEX文件的编译-MEX指令一个MEX文件在编写好了以后,要进行编译和链接才能最终生成可执行的程序文件。MATLAB语言中提供了函数mex用以编译MEX文件,完整的MEX指令格式如下:MEX option1opti
17、onNsourcefile1sourcefileN objectfile1objectfileN libraryfile1libraryN其中,option1optionN是MEX指令的命令行参数选项;sourcefile1sourcefileN为参与编译生成MEX文件的所有C原文件;objectfile1objectfileN为参与编译的对象文件;libraryfile1libraryN为参与编译的函数库文件;这里命令行参数包括多种,以下是其中几种:-c 对源代码仅做编译而不连接;-setup 编译器的设置;-f(file) 以file文件选项文件对MEX文件进行编译,如果文件不在当前目录,
18、则应当使用包含路径的全称文件名;还有很多其他的控制参数,这里不在一一介绍。详细的参数设置参见附录1如果是第一次编译MEX文件,但是对编译器的选项文件,也就是上述的控制字符串不熟悉,那么可以简单的以以下形式编译,在MATLAB的命令窗口输入: mex file.c其中file.c包括文件的完整的路径,但是如果待编译的文件所在目录正好是当前目录,那么路径名可以省略;输入上述命令回车后,会出现以下类似提示: mex matmax.cSelect a compiler: 1 Lcc C version 2.4 in C:MATLAB6P5P1syslcc 2 Microsoft Visual C/C+
19、 version 6.0 in C:Program FilesMicrosoft Visual Studio 0 None Compiler: 1The default options file: C:Documents and SettingsSicentApplication DataMathWorksMATLAB R13mexopts.bat is being updated from C:MATLAB6P5P1BINWIN32mexoptslccopts.bat. 这是提示用户选择一个编译器,选择以后下次再编译时,这个被选定的编译器将会被作为默认的编译器供用户使用,如果这时用户想改变编
20、译器的类型,可以用setup控制参数实现。 在MEX文件被编译以后,在MATLAB中调用MEX文件也相当的方便,其调用方式与使用MATLAB的M文件相同,只需在命令窗口键入相应的MEX文件名即可。一些更具体的编译和调用的方法参见本文中的例子。这里,不再对UNIX系统下参数作说明了。如有需要,请参见helpmex命令下所显的所有信息。一般高级语言从编写源代码开始到最终的可执行程序的生成过程主要包含三个步骤:1)编写源代码 利用代码编写器,如VC+或 MATLABedit编辑器,进行语言的源代码编写。2)编译 这一步是对源代码进行编译,主要检查程序源代码是否有语法和词法错,将源文件编译成目标文件。
21、3)链接这一步是链接过程,主要是将源文件生成的目标文件、必要的库文件及其的目标文件链接在一起,生成最终可执行的程序文件。因此,在生成语言 文件的过程中,同样也要经历这三个步骤。2.2 建立 MEX环境如果用户希望编译生成C MEX文件,首先必须具备两个最基本条件:其一是要求已安装了 MATLAB应用程序接口组件及其相应工具;其二是要求有合适的语言编译。如果用户的操作系统是MicrosoftWindows平台,那么用户所使用的语言编译器必支持32位 Windows动态链接库才能满足要求。当具备了这两个条件后,也就具备了最基本的编译生成C MEX文件的基础。但是编译C MEX文件之前还必须要以MA
22、TLAB进行编译器配置,以使MATLAB知道用所使用的编译器类型及其路径。MathWorks公司的开发者为了简化配置工作,在Windows下为命令mex提供了setup,当用户键入命令mex setup之后,只要简单地回答系统的提问,即可完成全部的配置工作。以Windows 2000和MATLAB 6.5为例,在 MATLAB 6.5中可以支持17种编译器,其中包括Borland C+,VC+,Lcc C version2.4(MATLAB本身内嵌的编译器)等等在这里,仅介绍两种编译器的配置方法:1)Lcc complier2)Microsoft Visual C/C+ Version6.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB与C语言接口 毕业论文 MATLAB 语言 接口
链接地址:https://www.31doc.com/p-3902786.html