1、1浅 析 VC 与 matlab 接 口 编 程 (一 ) 作 者 : 孙 科QQ:44760299 邮 箱 : c_Matcom 是 mathTools 公 司 推 出 的 一 个 能 将 M 文 件 转 化 成 相 同 功 能 C+代码 的 工 具 。 相 比 Matlab 自 带 的 编 译 器 Compiler, 用 Matcom 转 化 代 码 要 简 单 和方 便 得 多 。 本 文 将 结 合 作 者 编 程 经 验 , 以 VC6.0 和 Matcom 为 例 , 详 细 介 绍 如何 利 用 Matcom 进 行 VC 与 Matlab 的 联 合 编 程 。 Matcom
2、安 装 安 装 Matcom 前 要 已 求 安 装 VC6.0。 在 安 装 过 程 中 出 现 选 择 编 译器 对 话 框 , 选 择 “是 ”( 图 一 ) 。 出 现 选 择 是 否 安 装 Matlab 时 , 选 “否 ”。 其他 选 项 采 用 默 认 设 置 。 Matcom 可 以 独 立 于 Matlab 运 行 , 但 需 要 外 部 的 C+编译 器 , 指 定 Matlab 的 位 置 是 为 了 让 编 译 文 件 中 需 要 的 一 些 系 统 函 数 找 到 路 径 用 的 。图 一安 装 完 成 后 , 启 动 界 面 MIDEVA(图 二 )。 MIDEV
3、A 集 成 开 发 环 境 包 括 命 令 行窗 口 、 变 量 列 表 窗 口 、 命 令 列 表 窗 口 和 编 译 链 接 信 息 窗 口 等 几 部 分 , 并 有 详 细 的 帮助 文 档 。 2图 二Matcom 命 令 输 入 方 法 与 Matlab 相 同 。 如 果 安 装 在 中 文 版 操 作 系 统 时 , 输 入 命 令前 加 一 空 格 。 ( 如 图 三 ) 。 图 三下 面 详 细 介 绍 如 何 将 m 文 件 编 译 后 放 入 VC 中 。1、 启 动 MIDEVA ,File-New, 新 建 如 下 Test1.m 文 件 :x=1:0.1:10;
4、y=sin(x); plot(x,y); 将 文 件 保 存 ( 如 图 四 ) 。3图 四m 文 件 保 存 的 默 认 位 置 为 : matcom 安 装 目 录 matcom45, 生 成 的 C+文 件 保存 的 默 认 位 置 为 : matcom 安 装 目 录 matcom45Debug, 本 例 matcom 安 装 目录 为 C 盘 即 C:matcom45Debug,在 该 目 录 下 将 会 产 生Test1.h、 Test1.cpp、 Test1.r 、 Test1.obj 文 件 。2、 在 VC 中 用 MFC Wizard(exe)创 建 一 个 基 于 对 话
5、 框 名 为 Example 的 工 程 。在 面 板 上 添 加 一 个 ID 为 IDC_BUTTON1 按 扭 。3、 将 C:matcom45Debug 目 录 下 的 Test1.cpp 文 件 的 内 容 拷 贝 到void CExamleDlg:OnButton1()下 , ( 如 图 五 ) 。 4图 五 4、 将 C:matcom45lib下 的 matlib.h 和 v4501v 文 件 和 C:matcom45debug下 的 Test1.h 文 件 拷 贝 到 工 程 Example 目 录 下 , 然 后 在 VC 中 将 库 文 件 和 头 文 件加 入 到 工 程
6、 中 : 工 程 -添 加 工 程 -Files,选 择 刚 刚 拷 贝 到 Example 目 录 下 的matlib.h 、 v4501v 和 Test1.h 文 件 ( 如 图 六 ) 。5图 六 5、 在 ExamleDlg.cpp 中 加 入 如 下 代 码 :#include “matlib.h“#include “Test1.h“6、 在 void CExamleDlg:OnButton1()中 分 别 添 加 一 个 初 始 化 类 库 调 用 函 数 ”initM(MATCOM_VERSION)”和 一 个 结 束 类 库 调 用 函 数 ”exitM()”( 如 图 七 )
7、 。 图 七 6运 行 程 序 , 点 击 画 图 按 扭 ( 如 图 八 ) 。图 八 程 序 的 release 版 本 需 要 ago4501.dll、 v4501v.dll、 v4501.lib 三 个 文 件 的 支持 。 以 上 只 是 介 绍 了 VC 和 Matcom 接 口 编 程 的 一 个 简 单 例 子 , 功 能 并 不 完 善 , 也远 远 达 不 到 一 个 软 件 所 要 求 的 水 平 , 但 只 要 熟 悉 了 VC 和 Matcom 接 口 编 程 的 基本 原 理 和 方 法 , 相 信 大 家 一 定 能 够 编 出 优 秀 的 软 件 。7浅 析 V
8、C 与 Matlab 联 合 编 程 ( 二 )在 “浅 析 VC 与 Matlab 联 合 编 程 ( 一 ) ”中 简 单 介 绍 了 VC 与 matcom 的接 口 编 程 , 实 现 了 VC 调 用 matcom 的 一 个 基 本 功 能 , 要 真 正 熟 练 使 用 接 口 编 程 ,还 要 对 函 数 调 用 有 一 定 了 解 。 本 文 通 过 一 个 实 例 , 较 详 细 的 介 绍 如 何 在 VC 中 调用 matcom 编 译 后 的 函 数 。 首 先 新 建 一 个 函 数 huatu.m, 该 函 数 的 功 能 是 :接 受 用 户 输 入 的 左 端
9、 点 值 和 右端 点 值 两 个 输 入 参 数 , 然 后 在 该 区 间 画 正 弦 图 形 。 函 数 还 将 生 成 两 个 随 机 数 , 作 为一 个 点 的 坐 标 在 图 中 打 印 出 来 ( 绿 点 ) , 用 来 说 明 如 何 在 VC 中 处 理 调 用 函 数 的返 回 值 。 步 骤 如 下 :1 建 立 一 个 名 为 Example2 基 于 对 话 框 的 MFC(exe)工 程 。2 在 matcom 中 新 建 一 个 名 为 huatu.m 文 件 , 如 图 1;图 13.在 matcom 命 令 窗 口 中 运 行 该 函 数 ,如 图 2;8图
10、 24 将 生 成 的 huatu.h、 huatu.cpp( 默 认 位 置 为 安 装 目 录 :matcom45samplesDebug) 和 matlib.h、 v4501v.lib( 默 认 位 置 为 安 装 目 录 :matcom45lib) 四 个 文 件 拷 贝 到 建 立 的 工 程 Example2 目 录 下 。5 将 第 四 步 拷 贝 的 四 个 文 件 加 入 到 VC 工 程 中 : 工 程 -添 加 工 程 -文 件 , 选 择刚 才 拷 贝 到 Example2 目 录 下 的 四 个 文 件 。 完 成 后 如 图 3;9图 36 在 Example2dl
11、g.cpp 中 添 加 头 文 件 : (如 图 4 所 示 )#include “matlib.h“#include “huatu.h“10图 47 为 工 程 建 立 界 面 : 添 加 一 个 Button 按 扭 控 件 ; 添 加 四 个 Edit box 控 件 , 用于 显 示 数 据 ; 添 加 五 个 Static text 控 件 , 四 个 显 示 文 字 , 一 个 显 示 图 形 , 将 显 示图 形 的 Static text 的 ID 设 置 为 ID_PIC。 其 他 所 有 控 件 属 性 保 持 默 认 (为 了 看 图方 便 , 可 以 适 当 调 整 显 示 图 形 Static text 控 件 的 边 缘 )。 如 图 5 所 示