文档介绍: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 环境运行。
Matlab 引擎