posts - 112, comments - 215, trackbacks - 0, articles - 34
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Matlab Add-in 与VC++ 的混合编程技术

Posted on 2006-12-17 16:39 济公 阅读(2574) 评论(2)  编辑 收藏 引用 所属分类: VCMatlab

1 引言
        Matlab 是使用广泛的数学软件是一个完整的数学平台Matlab 在图象处理方面有着明显的优势 具有强大的矩阵运算功能在进行一些图象变换时避免繁琐的计算 有专用图形显示函数消除了显示界面设计的瓶颈 有丰富强大工具箱函数支持对图象的分析和理解透彻但Matlab 强大的功能不能脱离它的环境在Matlab中使用行解释方式执行代码限制了代码执行速度开发一个Matlab 与其他高级语言的接口就
可以把Matlab 的强大功能融入各种应用程序中通过高级语言编译器编译为二进制代码从而大大提高执行速度
        Visual C++可以开发从底层系统级到高层用户级的各种软件但VC++在图象处理等工程计算方面和图形显示方面与Matlab 相比显得复杂而麻烦将Matlab 与Visual C++结合编程将改善工程应用如图象处理应用程序的编写及开发其混合编程方式分为5 种
        Matlab 引擎方式采用客户机/ 服务器的计算方式Matlab 作为ActiveX 自动化服务器VC++的程序作为前端客户机利用Mideva Mideva 是Mathtools 公司推出的一种Matlab 集成编译开发平台可将M 文件转换为C/C++源码然后添加进MSVC 工程中
        VC++ 程序中按照Matcom 语法直接书写Malab C/C++数学函数语句用Matlab 的Mcc 将M 文件翻译成CPP 代码然后在C/C++编译器中调用也可用Mcc 将M 文件编译为独立可执行程序Stand-alone Matlab Add-in 添加式编程方法各有利弊方法要求
        后台运行Matlab 程序运行速度慢方法对于部分语句以及Struct 的支持有缺陷方法类似于SDK 开发局限性比较大不符合现代软件设计的规范方法纯手工操作本身也不支持部分图形语句对类的支持不够方法最简便易学但要求Matlab V6.0 以上版本同时要求有集成编译环境如Microsoft Visual C/C++ V6.0 或Borland C++ Builder 6.0 等
2 Matlab Add- in
        Matlab 6.0 以后版本对其Compiler 作了改进它支持更多的数据类型具有更强的优化功能更为重要的是其Matlab Add-in 提供了一个Matlab 和VC++直接集成的途径它具有一些新的特征快速集成M 文件到C++工程中创建独立的C/C++应用程序或C MEX DLL 通过M 文件创建共享库或MEX 文件内含Visual Matrix Viewer 调试过
        程中可以查看矩阵变量的值直接修改M 源文件而不是修改生成的C/C++ 文件方便快捷地打包应用程序等这种方式即避免了生成导入库Lib 文件的麻烦又不需要Mediva 的介入同时生成Stand-alone 独立可执行程序可脱离Matlab 单独运行下面以Matlab 6.0 Microsoft Visual C/C++V6.0 MSVC 为主介绍其安装使用方法
2.1 Matlab Add-in 的安装
(1) 启动Matlab 在命令窗口内输入Mex-Setup” Visual C/C++ V6.0
(2) Matlab 环境下运行“mbuild-setup” 按提示选取Microsoft Visual C/C++ version 6.0 它将配置使用MSVC 为默认的编译器这是创建独立应用程序Stand-alone 必需的并安装Matlab Add-in所需的Matlab Compiler 和C/C++ 数学库文件到MSVC 目录
(3) 仍在Matlab 环境下运行cd(prefdir) 和mccsavepath prefdir 是matlab 内部工作环境变量mccsavepath 命令将保存当前Matlab 路径到mccpath 文件中
(4) 在Microsoft Visual C/C++ 环境中配置
Matlab Add-in MSVC 工具栏上将出现M 文件加入Matrix Viewer Add-in Package Help 等MatlabAdd-in 图标以后每次启动VC++ 自动加载MatlabAdd-in
(5) 配置Windows 系统
        使用这种方式需要注意以下几个问题添加入MSVC 工程中的M 文件必须为函
数文件而不能是脚本文件否则程序会出错最好不要修改生成的C/C++代码如果需
要改动可以通过在MSVC 工作区FileView 选项卡下直接修改M 原文件可以通过在M 文件中设置断点在运行中通过Matrix Viewer 观察Matlab 变量的值
3 Stand -alone 程序实例
        把Matlab Add-in 与VC++混合编程的方式应用于图象处理图象分割的算法在Matlab 下已写好命名为banji.m 的M 函数文件记住存放路径启动MSVC 打开File New 菜单选择Project 选择Matlab Project Wizard , Project Name命名为Banji 点击Ok 屏幕显示另一界面可选择所生成应用程序的类型Windows Console EXE C-MEX DLL M-MEX DLL Shared M-DLL 还可选择代码为C 程序还是C++ 程序选择Debug
还是Release 模式选择是否生成Main 函数是否需要支持图形等这里选择生成C++程序其余采取默认设置点击Finish 再Ok 以后出现一个对话框要求选择添加到工程中的M 原文件按路径选择文件banji.m 后可看到MSVC 调用Mcc 编译生成一个混合M 文件和C 的工程在File View 选项卡中可看到添加的M 文件和自动生成的C++文件再编译后就可生成Stand-alone程序Banji.exe 了要运行Stand-alone 程序可直接在MSVC 集成环境中完成但要注意若编写的M 函数文件需要参数时就只能转到命令行下用Stand-alone 程序名后跟参数的方式执行具体说来就是转到Microsoft Windows Dos 下然后用Banji.exe**执行其中** 指的是所要用的参数文件名执行前还需确保参数文件已存在于同一路径下
4 结束语
        Matlab Add-in 提供了一种直接集成M 文件到MSVC 下混合编程的方法通过它可以很方便地生成Matlab 和VC++的混合程序这在图象处理信号处理等需要大量计算可视化界面的工程应用领域有广泛的应用价值但是这种方式也是通过Mcc 预先将M 文件编译为C/C++程序的所以Mcc方式有的缺点如不支持所有Matlab 函数语句基本上它都有这只有期待Matlab V6.0 以后的版本予以改进了。

Feedback

# re: Matlab Add-in 与VC++ 的混合编程技术  回复  更多评论   

2008-07-17 10:34 by Carolyn
mccsavepath prefdir 是不是不存在Matlab7.1 里?

# re: Matlab Add-in 与VC++ 的混合编程技术[未登录]  回复  更多评论   

2008-10-07 11:03 by Andy
这条命令是matlab 4 之前版本所用,在matlab 7中已经取消
只有注册用户登录后才能发表评论。