论文部分内容阅读
【摘 要】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.
【关键词】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.