Matlab和Visual C++的混合编程
时间:2025-02-24
时间:2025-02-24
Matlab和Visual C++的混合编程
Matlab和Visual C++的混合编程
(信息工程学院,计算机系,计算机科学与技术专业 陈健)
(学号:2000131001)
内容提要:在对如今领导潮流的两个强大的可视化开发工具Microsoft Visual C++和Matlab间的混合编程作了大量的尝试的基础上,本文总结出5种行之有效的应用于数字图像处理软件开发的集成途径;对它们各自的优点和不足作了详细的阐述;并对未来两个软件的进一步联合提出了一些粗浅的意见和希望。
关 键 词:编程,混合编程,Matlab Visual C++
教师点评:Matlab是功能强大的高性能数值计算和可视化软件系统,具有较好的数值分析、信号处理、图形和图像处理等方面的功能。本论文将VC++与Matlab结合起来,实现混合编程,既发挥VC++在图像的各种处理中编程灵活、执行快捷的特点,又发挥Matlab在数值分析、信号处理及图形和图像等方面简单易用的优势,使整个系统既简洁又高效。该论文概念清楚,观点合理,编程工作量较大,是一篇优秀的本科论文。(点评教师:蔡茂国,教授)
一、混合编程的原因与优势
Matlab(Matrix Laboratory,矩阵实验室)是一种高性能的数值计算和可视化软件的开发软件,在数值分析、信号处理、系统辨识、特殊函数和图形等方面具有广泛的应用。由于Matlab用的是一种脚本语言,其执行是逐行解释的,而且为了加强通用性,程序中所有的变量都用矩阵数组MxArray来实现,所以,在实现一些复杂的算法时,程序执行效率低。虽然Mathworks公司已经在竭力提高m脚本文件(script files)的运算速度,但仍然不能和实现同样功能的可执行程序相比,而且m脚本文件不能脱离Matlab环境运行的,也制约了Matlab程序的可移植性和通用性。
C++是新一代面向对象(OOP)高级程序设计语言,由于它建立在C的基础之上,使之成为最流行的OOP语言。Visual C++在功能和优化等方面,是同类产品的佼佼者,并且绝大多数的软件开发包都提供了对它的接口。
虽然Visual C++是目前综合性能最高,功能最强大的可视化开发工具,但其在图像处理方面并没有专门的功能函数库,我们在利用Visual C++编写图像处理的程序时,实现一些基本的图像处理功能如平移、缩放、腐蚀等都要重新架构自己的图像处理函数库,编写大量的代码,开发效率不高;而Matlab虽然有完整的图像处理工具箱,编程效率高,极少的代码即可实现复杂的运行,但由于它是解释型脚本语言,执行效率低,实现相同功能的代码跟其他编程平台相比运行时间相对较长,而且不适合作为通用的编程平台。因此,如果能实现两个开发工具的混合编程,各取所长,充分发挥两个开发工具的优势,将给我们的开发工作带来极大的便利。
二、Visual C++和Matlab混合编程的有效途径
根据Matlab是否运行,一般将Matlab与Visual C++混合编程分为两大类:Matlab在后台运行和可以脱离Matlab环境运行。
2.1 Matlab引擎(Engine)
Matlab引擎(Engine)采用客户机/服务器(Client/Server)的计算方式,通过Windows的ActivcX通道和Matlab接口。在具体的应用中,Visual C++的程序作为前端客户机,通过调用Matlab Engine在后台与Matlab服务器建立连接,实现动态通信。这种方法实现较为简单,不要求连接整个Matlab,只需要嵌入必要的Matlab Engine库,可大大地节省系统资源,但这种混合方法需要Matlab在后台运行,运行效率低。
Matlab engine提供了一组 Matlab API 函数,通过这些 API 函数实现应用程序进程之间的传递数据,Matlab engine 库中的API函数如下:
1) engOpen,开启Matlab engine
2) engClose,关闭Matlab engine