Matlab与C/C++混合编程技术研究

来源 :数字化用户 | 被引量 : 0次 | 上传用户:beehall
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】Matlab作为一款具有强大运算功能的数学软件,广泛应用与各种工程实践中,它能够为用户提供相对其他应用软件更优质的环境;C/C++语言是高级程序设计语言,计算机中的各种硬件、应用及操作系统可以通过C/C++语言直接运行。然而在工程实践中常常会遇到Matlab与C/C++混合编程的技术问题,如在Matlab的计算环境中的数据处理,文章围绕二者之间互相调用的方式,对Matlab与C/C++混合编程的技术问题进行了深入的研究和探讨,希望对这种混合编程的研究提供有益的参考。
  【关键词】Matlab;C/C++;混合编程技术
  前言:Matlab是一款广泛应用的数学软件,其运算功能十分强大,具备数据分析处理、系统分析、数值计算以及符号或图形等运算功能,用户可以通过Matlab这一数学平台进行复杂的运算,使分析计算的效率得到最大限度地提高;C/C++语言是高级程序设计语言,在当下十分流行,计算机中的各种硬件、应用及操作系统可以通过C/C++语言直接运行,可见C/C++语言相比其他编程软件具有明显的优势,目前很多重要的应用软件主要通过C/C++语言开发的,如Matlab。
  一、Matlab软件和C/C++语言简介
  Matlab是当前广泛应用的数学软件,其运算功能十分强大,如具备数据分析处理、系统分析、数值计算以及符号或图形等运算功能,Matlab能够为用户提供相对应用软件更为自由、方便、简洁的编程环境,用户可以通过Matlab这一数学平台进行复杂的运算,使分析计算的效率得到最大限度地提高。但是,Matlab应用软件也有缺点,尽管与其他应用软件相比拥有更优越的编程环境,可它的程序始终是一款解释执行的程序,在预处理环节中并不需要编译,所以Matlab软件程序的运行速度相对来说比较慢。
  C/C++语言是高级程序设计语言,在当下十分流行,计算机中的各种硬件、应用及操作系统可以通过C/C++语言直接操作和运行,可见C/C++语言相比其他编程软件具有明显的优势,目前很多重要的大型应用软件主要通过C/C++语言开发的,如Matlab[1]。
  二、通过Matlab调用C/C++
  通过Matlab编程软件对C/C++进行调用的方式有MEX技术和C/C++的调用动态链接库两种。在Matlab与C/C++混合编程技术进行之初,首先要设置Matlab的应用程序以及编译器——设置编译应用程序MEX:MEX-SETUP;编译器MBUILD-SETUP。C/C++文件与MEX文件之间的转换,需要在设置当中选择VC编译器,通常一个C/C++的程序当中包含四个部分,其中第四个可以灵活运用。这里举一个例子:#includec“mex.h”,通过MEXFUNCTION使Matlab知道如何对函数进行调用,最后用mex timestwo.c对文件进行编译,然后在Matlab的命令下对生成的MEX文件进行调用。
  当前编译C/C++程序的编译也可以通过C语言编译器,这样在mex的命令下就可以直接调用C++语言的mex文件了。在Matlab文件上运行mex文件是不需要其他工具的,可见使用mex文件是很方便的,具有提升运行速度、重用代码和扩展功能的优点。
  Matlab对动态链接库中的DLL文件提供了接口,通过这个接口就可以通过Matlab对动态链接库中的数据进行调用,DLL文件中的所有编程语言在Matlab的环境中都能够得到支持,调用DLL文件之前,需要准备相应的C语言文件,针可以使用源程序中的文件对C/C++语言的文件提供支持。在Matlab中利用动态链接库进行调用的技术通常要完成以下几个步骤:打开文件、准备相应的数据、动态链接库中导出的函数进行调用、关闭文件。在这些步骤当中需要用到的函数有:libisloaded,libstruct,calllib,loadlibrary等。
  DLL动态链接库文件的调用方式相对MEX文件的方式来说,更具有实用性,能够为C/C++代码提供更多方法[2]。
  三、通过C/C++调用Matlab
  在实践活动当中通,通过C/C++调用matlab的方法有多种,如包含m文件转换的C/C++文件、调用m文件生成的DLL文件以及调用matlab的计算方法。这里重点对利用Matlab的计算方法进行说明。
  Matlab的数据库能够提供相应的接口数据,用户通过对这些接口数据的利用,调用Matlab文件就可以在自己的程序当中直接进行。所以在实践当中,Matlab相当于服务器,而C/C++的语言程序就是客户端,二者通过Matlab的引擎方式结合到了一起,Matlab计算引擎接进行命令和数据的接收就通过C/C++程序来进行。除此之外,C/C++程序也可以在VC的语言环境下进行编译,把两个数据链接库libeng.lib和libmx.lib输入到当前的程序,然后填入两个目录即可实现。
  通过这种方式进行Matlab的调用需要在Matlab环境中完成,不仅能够使系统资源得到节省,也会提高应用程序的整体性[3]。
  结论:综上所述,由于当下在工程实践当中常常会遇到Matlab与C/C++混合编程的技术问题,如在Matlab的计算环境中的数据处理,文章围绕二者之间互相调用的方式,即通过Matlab对C/C++进行调用以及通过C/C++对Matlab进行调用,对Matlab与C/C++混合编程的技术问题进行了深入的研究和探讨,给出了系统框架的同时可以看到系统应用的效果,希望能够对这种混合编程的研究提供有益的参考,以满足用户对编程学习的更多需求。
  参考文献:
  [1]朱传安,潘大夫.Matlab与C/C++混合编程接口及应用[J].微计算机信息,2010,12(15):229-231.
  [2]甘胜涛.基于MATLAB与C#混合编程的遗传算法优化设计斜齿轮[J].现代机械,2011,10(03):9-11+26.
  [3]李亚军.基于MATLAB与C/C++的盲处理系统混合编程模式的研究[D].长春:长春理工大学,2011.
其他文献
【摘 要】在这个信息化的时代,各行各业都依靠着信息技术取得了快速的发展,在我国的数字化档案信息管理中也利用了现代的一些先进技术,以保障信息化档案的安全性,本文主要说明了对于数字化档案安全管理的必要性,在数字化安全管理中需要面对的一些问题以及相对应的解决方案。  【关键词】数字化档案 信息安全 问题 防范措施  为了保障数字化档案的信息安全,我们建立了数字化信息安全保障体系,对于数字化档案信息的安全
期刊
【摘 要】云计算的思想就是把力量联合起来,然后给其中的每一个成员使用。云计算的基本原理就是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。这也意味着计算能力就像我们现在使用水和电一样,取用方便,费用低廉。随着计算机行业的不断的发展,计算机行业已经走过了许多个阶段,云计算作为一种基于互联网的计算的模式,是计算机
期刊
【摘 要】太阳能硅片切割过程中,导轮是很重要的易磨损部件。切片过程中,伴随工作台的缓慢下降,钢线携带砂浆在导轮槽内高速运转,对硅块起到切割作用。导轮的涂层、槽型、槽深及角度等对切割质量起到关键作用。本文主要论述导轮对切割质量的影响。  【关键词】太阳能;硅片切割;导轮  引言  导轮是线锯机床中负责绕线的轮体,内部为钢制,外面敷设一层聚氨酯,其转动靠两端轴承及其中间穿过的丝杠动作。导轮经开槽机开槽
期刊
【摘 要】由于计算机技术的飞速发展,计算机网络的应用也越来越广泛。然而随之而来的各种病毒的困扰不断升级,研究计算机病毒的防范措施已迫在眉睫。目前,最有效的方式还是通过有效的预防,避免计算机安全问题的泛滥才是最主要的解决安全问题的方案。本文从计算机病毒的内涵、类型及特点入手,探讨对付计算机病毒的方法和措施。  【关键词】计算机安全 病毒预防 有效措施  随着互联网时代的发展,计算机已经是人们生活中不
期刊
【摘 要】近年来,雾霾天气频繁袭扰我国北方的诸多地区,特别是京津冀地区,已经成为制约北方经济发展、城市建设与生态文明建设的重要因素。治理雾霾,从根本上缓解中国当前的大气污染,已经成为中国经济社会跨越式发展的迫切需求。通过分析京津冀地区雾霾天气的现状,在充分认识雾霾天气成因及危害的基础上,提出防范与治理并重,以法律与制度建设、城市交通系统建设以及企业市民环保道德建设为重点的综合治理措施。  【关键字
期刊
【摘 要】对静强度试验与应力分析一体化技术中试验测量值与理论分析结果相关性分析评估进行重点阐述,并通过实例说明试验与应力分析一体化技术中试验与分析相关性评估过程。  【关键词】静力试验、应力分析、结构响应、相关性  一、引言  随着航空技术的发展,对飞机结构的安全性要求越来越高,新机型的研制、新结构和新材料的应用都需要进行充分的试验加以验证。  飞机结构静力试验是保证飞机结构完整性的最重要的手段之
期刊
【摘 要】本文介绍了一种利用单片机智能控制特性设计的锂/亚硫酰氯电池的激活放电电路,电路接通后,单片机系统根据电池电压的高低,对电池适时进行快速激活。  【主题词】电池 单片机 激活 电路  锂/亚硫酰氯电池具有比能量高、放电电压平稳、湿荷电贮存寿命长(5~10年)、使用温度范围宽广(可在-40℃~+60℃的温度范围内工作)、使用方便等优点。但该电池还存在电压滞后现象,电压滞后是指电池放电初期,电
期刊
【摘 要】随着信息时代的来临,计算机网络技术已经融入到社会各个层面,社会各行业不断引进网络信息设备,建立了信息化管理系统和运营系统,实现了现代化信息管理。对医院而言,信息化技术不仅用于日常信息储备和查询,对医疗、设备管理等各个方面都有重要的作用,是医院工作顺利开展的重要保障。但是由于现代网络环境的复杂多变,医院网络信息系统往往面临着极大的安全威胁,造成网络系统破坏、信息泄露等,给医院带来严重的损失
期刊
【摘 要】本文通过对典型零件的定位装夹方式、加工顺序、切削用量等的选择为例,结合数控加工的特点进行工艺分析与编程,侧重于该零件的工艺分析、加工路线的确定及用G代码编制该零件的数控加工程序,其中零件工艺规程的分析是此论文的重点。  【关键词】零件工艺规程 加工路线 程序编制  一、引言  规定工件工艺过程和操作方法等的工艺文件称工艺规程。工艺规程制定得是否合理直接影响工件的质量、生产率和经济效益。下
期刊
【摘 要】在windows操作系统使用过程中,经常要使用资源管理器以实现对文件的各种操作,本文详细阐述了如何用c语言调用Win32API创建类似资源管理器的方法,内容涉及到自定义窗口的实现,windows消息处理,窗口重绘,托盘区的操作,多标签的实现原理等多方面的编程问题,在实现过程中,不仅可以接触到windows底层的相关技术,而且对算法基础和数据结构也进行了深入的探讨和研究。  【关键词】c语
期刊