1、 飞思卡尔智能汽车 MATLAB GUI上 位 机 制 作 说 明学校:广东工业大学学院:信息工程学院作者:文新懿指导:王日明日期:2010年12月01日II关 于 此 文 档 的 制 作 与 使 用 简 要 说 明 本 文 为 飞 思 卡 尔 智 能 车 上 位 机 制 作 说 明 , 该 作 品 使 用 MATLAB GUI编 写 , 通 过 串口 实 现 电 脑 和 下 位 机 之 间 的 通 讯 及 数 据 分 析 处 理 。 由 于 本 人 技 术 水 平 及 时 间 所 限 ,此 作 品 仅 完 基 本 框 架 部 分 , 具 体 模 块 及 功 能 需 要 由 其 他 人 员 完
2、 善 。 为 此 , 本 人 编 写此 文 档 详 细 说 明 学 习 、 制 作 流 程 , 以 方 便 交 流 学 习 。 希 望 此 文 档 能 为 你 提 供 帮 助 ,谢 谢 ! I目 录 第一章 引 言 1第二章 MATLAB GUI先 备 知 识 .22.1 MATLAB 学 习 网 址 .22.2 MATLAB GUI 学 习 视 频 .2第三章 上 位 机 方 案 设 计 33.1 总 体 结 构 33.2 登 陆 界 面 UCS GUI43.3 数 据 录 入 界 面 login GUI43.4 图 线 分 析 界 面 analysis GUI5第四章 简 单 操 作 说
3、明 54.1 软 件 需 求 54.2 上 位 机 操 作 5第五章 主 要 功 能 说 明 65.1 MATLAB 串 口 通 信 .65.2 图 线 数 据 显 示 7第六章 具 体 问 题 与 解 决 方 案 76.1 GUI 界 面 切 换 .76.2 按 钮 外 观 编 辑 86.3 串 口 清 除 86.4 二 进 制 文 件 相 关 96.5 改 变 光 标 形 状 106.6 获 取 当 前 路 径 106.7 将 MATLAB GUI 生 成 exe.116.8 录 入 图 片 劣 化 126.9 图 片 读 入 相 关 126.10 为 GUI 程 序 添 加 启 动 画
4、面 136.11 循 环 定 义 新 数 组 136.12 硬 盘 格 式 转 换 后 HostID 改 变 Matlab 的 license 失 效 146.13 获 取 系 统 时 间 146.14 用 图 片 作 为 axes 的 背 景 146.15 在 一 个 Figure 中 画 多 幅 图 15第七章 总 结 与 展 望 16附 录 171第一章 引 言 下 文 以 上 位 机 的 设 计 为 主 线 , 包 括 小 车 的 整 体 构 架 设 计 、 主 要 模 块 设 计 , 以 及详 细 问 题 处 理 等 , 共 分 为 七 章 。 其 中 , 第 一 章 为 引 言 部
5、 分 ; 第 二 章 主 要 介 绍 了 制 作此上位机软件所需的 MATLAB GUI先 备 知 识 ; 第 三 章 整 体 介 绍 上 位 机 的 设 计 方 案 ; 第四 章 介 绍 了 软 件 的 简 单 操 作 方 式 ; 第 五 章 详 细 描 述 了 软 件 主 要 功 能 , 主 要 包 括 数 据录 入 部 分 和 图 线 分 析 部 分 。 第 六 章 描 述 了 在 制 作 过 程 中 遇 到 的 具 体 问 题 , 并 附 上 其解 决 方 案 以 供 参 考 。 第 七 章 总 结 了 在 此 作 品 的 完 善 建 议 及 心 得 体 会 。 2第二章 MATLAB
6、 GUI 先 备 知 识 2.1 MATLAB学 习 网 址 由 于 学 院 已 有 MATLAB 课 程 , 相 关 资 料 也 十 分 丰 富 , 在 此 就 不 做 重 复 了 。 本 文 档 主 要 讲 述有 关 GUI 制 作 的 相 关 知 识 , 限 于 本 人 是 完 全 自 学 , 技 术 水 平 有 限 , 若 有 错 漏 敬 请 指 正 。以 下 推 荐 若 干 MATLAB 学 习 的 网 址 , 作 品 制 作 的 大 部 分 知 识 来 源 于 网 站 论 坛 , 希 望 能 令 学习 者 有 所 借 鉴 :2.1.1 Matlab 中 文 论 坛 : http:/
7、 Matlab 百 科 全 书 : http:/ 外 , 学 会 使 用 help 指 令 , 阅 读 MATLAB 官 方 帮 助 , 也 是 十 分 有 效 的 学 习 方 法 。 往 往 苦寻 不 到 的 资 料 其 实 早 就 存 在 于 帮 助 之 中 , 只 是 我 们 不 识 庐 山 真 面 目 而 已 。2.2 MATLAB GUI 学 习 视 频 2.2.1 matlab_GUI_1 创 建 简 单 GUI2.2.2 matlab_GUI_2 按 钮 使 用 及 图 片 读 取 高 分 辨 率2.2.3 matlab_GUI_3radiobutton switch 语 句 图
8、 像 边 缘2.2.4 matlab_GUI_4.成 绩 查 询 系 统 界 面2.2.5 matlab_GUI_5 成 绩 查 询 系 统 功 能2.2.6 matlab_GUI_6 读 取 Excel 文 件2.2.7 matlab_GUI_7 读 取 文 件 错 误 处 理2.2.8 matlab_GUI_8 优 化 进 度 条 的 使 用2.2.9 matlab_GUI_9 与 Java VB C+ C# 联 合 编 程2.2.10 matlab_GUI_10 菜 单 添 加 Active 控 件 播 放 MTV*详 见 文 件 夹 “ GUI 学 习 视 频 ”3第三章 上 位 机
9、方 案 设 计 3.1 总 体 结 构 该 软 件 分 登 陆 界 面 UCS、 数 据 录 入 login、 图 线 分 析 analysis 三 个 界 面 , 在 登 陆 界 面 可 分 别进 入 另 外 两 个 界 面 。 各 个 界 面 之 间 可 独 立 保 持 或 相 互 切 换 , 实 现 不 同 功 能 间 的 通 讯 。图 线 分 析analysis数 据 录 入login登 陆 界 面UCS上 位 机 系 统43.2 登陆界面 UCS GUI3.3 数据录入界面 login GUI53.4 图线分析界面 analysis GUI第四章 简 单 操 作 说 明 4.1 软
10、件 需 求 制 作 过 程 中 需 用 到 MATLAB 软 件 、 串 口 调 试 助 手 、 虚 拟 串 口 软 件 , 此 类 资 源 网 上 十 分 丰 富 ,可 自 己 下 载 。若 要 在 安 装 不 同 MATLAB版 本 或 未 安 装 MATLAB的 PC上 运 行 , 需 要 安 装 MCRInstaller.exe( 具 体 操 作 见 6.7 将 MATLAB GUI 生 成 exe)4.2 上 位 机 操 作 4.2.1.安 装 MCRInstaller.exe64.2.2 运 行 文 件 夹 “ 上 位 机 EXE“ 中 UCS.exe, 打 开 登 陆 界 面 U
11、CS4.2.3.点 击 按 键 “ 数 据 录 入 ” , 进 入 数 据 录 入 界 面 login4.2.4.若 需 串 口 读 入 , 则 设 置 左 边 参 数 , 并 在 右 侧 按 格 式 输 入 文 件 保 存 地 址 , 点 击 按 键 “ 确定 ” , 保 存 已 输 入 地 址 ; 再 点 击 按 键 “ 使 能 ” 开 启 串 口 使 能 , 点 击 开 始 。4.2.5.若 不 需 串 口 读 入 , 直 接 读 取 以 保 存 数 据 , 则 只 需 在 右 侧 按 格 式 输 入 文 件 读 取 地 址 ( 现已 有 保 存 数 据 在 地 址 : “ UCS 所
12、在 地 址 data ” , 直 接 可 输 入 此 地 址 读 其 中 数 据 做 测 试 ) , 点击 按 键 “ 确 定 ” , 保 存 已 输 入 地 址4.2.6.点 击 按 键 “ 返 回 ” , 回 到 UCS 界 面 ; 也 可 不 返 回 , 保 持 数 据 录 入 界 面 login 打 开 , 手动 切 换 界 面4.2.7.点 击 左 上 角 按 键 “ LOAD” , 导 入 全 部 数 据 。 此 时 会 有 屏 闪 , 表 示 数 据 读 取 中 , 屏 闪 结束 时 读 入 完 成4.2.8.按 按 键 “ NEXT” 显 示 下 一 幅 , 按 按 键 “ F
13、RONT” 显 示 上 一 幅 , 按 按 键 “ FIRST” 显示 第 一 幅 , 按 按 键 “ VIDEO” 连 续 播 放 第 1-187 副 图 像 。 在 图 像 显 示 、 播 放 时 相 应 参 数 的曲 线 会 在 下 方 标 有 “ 曲 线 显 示 区 域 ” 的 位 置 显 示 , 各 对 应 曲 线 表 示 的 参 数 在 源 文 件 中 有 注释 说 明 。 各 参 数 意 义 详 见 文 件 夹 “ 下 位 机 说 明 ” 中 文 档 。第五章 主 要 功 能 说 明5.1 MATLAB串口通信 5.1.1在此以 CCD 组为例。先选 CCD 组,设置波特率为 3
14、8400,数据位 8 位,停止位 1位 , 无 校验位,并使能。先发送 170(十进制),然之后发送 85( 十 进 制 ) 至 下 位 机 , 下 位 机 反 应 后 , 开始 接 收 一 幅 图 像 以 及 这 幅 图 像 中 所 附 带 的 参 数 , 下 位 机 发 送 完 毕 后 , lcd 上 会 显 示 “ 发 送 成 功 ,等待继续发送”的提示。连续导入 187 块数据,并以 txt文 档 形 式 保 存 串 口 通 信 使 用 函 数 serial, 详 见 pdf 档 案 , 尤 其 注 意 操 作 实 例 中 回 调 函 数 ( 默 认 instrcallback或 自
15、编 的 mycallback) 的 运 用 , 及 基 于 中 断 的 串 口 通 信 优 于 基 于 查 询 的 串 口 通 信 的 原 因数 据 保 存 的 格 式 是 :CCD 组 : ( 1) 每 一 帧 数 据 , 保 存 为 一 个 txt 文 档( 2) 文 档 包 含 图 像 及 参 数 , 相 见 下 位 机 格 式 文 档( 3) 文 件 名 称 为 “ dataN.txt” , 其 中 N 为 0-186 的 整 数 , 通 过 数 据 录 入 模 块 串 口读 入 时 , 自 动 保 存 为 以 上 格 式 ; 若 直 接 读 取 已 存 在 数 据 文 件 , 则 需
16、 将 数 据 文 件 另 命 名 为 以 上 格式 。 5.1.2以 中 断 方 式 进 行 串 口 读 写 , 其 中 断 触 发 事 件 为 输 入 缓 存 达 到 3873 字 节 , 中 断 服 务 程 序 调用 m 函 数 mycallback, 相 关 知 识 点 见 以 下 资 料 :7matlab串口通信 .doc基于 MatlabGUI的 串 口 通 信 编 程 实 现 .基于 MATLAB串 行 通信 的 智 能 车 车 速 控 制 算 法 研 究 .5.2 图 线 数 据 显 示 以 CCD 组 为 例 , 根 据 输 入 的 3873 个 字 节 数 据 , 由 于 图
17、 像 是 40 行 *95 列 , 且 每 行 外 加一 个 0 作 为 标 示 , 因 此 提 取 40*( 95+1) 即 3840 个 数 据 进 行 处 理 。 处 理 过 程 包 括 将 读 入 数 据 做矩 阵 化 , 矩 阵 转 置 及 归 一 化 等 。 由 于 在 一 个 Figure 中 画 多 幅 图 是 有 一 定 限 制 的 , 若 直 接 显 示 则只 显 示 在 当 前 激 活 的 AXE 控 件 中 , 会 覆 盖 已 存 在 图 线 , 并 不 能 同 时 做 到 多 图 像 不 同 窗 口 播 放 。因 此 , 使 用 导 入 功 能 , 现 将 图 像 数
18、 据 导 入 到 全 局 变 量 global fn 中 , 再 从 fn 的 CData 属 性 读 出 ,实 现 跨 Figure 显 示 。 ( 见 6.13 在 一 个 Figure 中 画 多 幅 图 )曲 线 部 分 , 由 于 暂 时 未 完 成 PID 参 数 控 制 相 关 , 只 以 折 线 图 显 示 了 读 入 的 原 始 参 数 。 此 部分 内 容 , 有 较 大 改 进 空 间 , 希 望 日 后 能 不 断 完 善 。第六章 具 体 问 题 与 解 决 方 案 6.1 GUI界 面 切 换问 题 :我 在 做 的 一 个 程 序 需 要 实 现 多 界 面 的
19、切 换 , 我 搜 索 过 论 坛 上 的 相 关 问 题 , 解 决 方 法 好 像 都是 做 几 个 figure, 然 后 通 过 按 钮 或 者 其 他 的 操 作 使 一 个 显 示 而 另 一 个 隐 藏 。 我 试 了 一 下 , 切 换 的时 候 界 面 会 很 明 显 的 闪 一 下 , 有 没 有 别 的 什 么 方 法 可 以 让 界 面 切 换 的 时 候 看 起 来 很 自 然 , 就 好像 在 同 一 个 界 面 上 呢 ? 如 果 只 有 上 面 这 种 办 法 的 话 , 要 实 现 运 行 时 移 动 其 中 的 一 个 界 面 , 所 有的 界 面 都 相
20、应 移 动 , 应 该 怎 么 做 ?回 答 :没 有 太 好 的 办 法 。 你 可 以 这 样 处 理 看 看 :1、 把 所 有 的 GUI 窗 口 都 设 置 到 一 个 位 置 显 示 ;2、 在 调 用 另 一 个 界 面 的 地 方 调 用 GUI 后 , 延 时 关 闭 先 前 的 窗 口 :GUI2();pause(2);close(handles.figure1);这 样 , 新 的 窗 口 会 遮 挡 住 原 先 的 窗 口 , 再 关 闭 原 先 窗 口 时 就 不 会 有 任 何 感 觉 。备 注 :本 程 序 界 面 切 换 设 计 , 使 用 全 局 变 量 做
21、判 断 标 志 , 控 制 各 个 界 面 的 开 闭 状 态 , 这 样 可 以 同时 打 开 多 个 GUI 界 面 。 当 然 ,若 想 实 现 其 他 形 式 的 界 面 切 换 , 可 灵 活 应 用 上 述 问 题 的 方 法 。86.2 按 钮 外 观 编 辑问 题 :按 钮 控 件 外 观 是 默 认 , 怎 样 才 能 在 button 上 加 图 标 , 使 显 示 更 美 观 。回 答 :在 button 上 加 图 标 的 程 序 , 或 许 对 大 家 有 用 。基 本 思 想 , 利 用 button 支 持 cdata 的 思 想 , 把 图 片 的 数 据 转
22、换 成 cData 放 在 按 钮 上 。 实现 了 在 GUI 上 , 按 钮 有 背 景 图 片 。备 注 :本 程 序 设 计 中 , 对 部 分 按 钮 :使 用 上 述 问 题 的 方 法 , 改 变 外 观 。 但 发 现 存 在 一 个 问 题 , 当 GUI 大 小 改 变 时 , 按 钮 大 小 将发 生 变 化 ; 而 此 时 外 观 图 片 大 小 不 变 , 这 会 使 实 现 发 生 偏 差 。 此 问 题 希 望 有 能 力 者 加 以 完 善 。另 外 , 利 用 Fireworks 可 以 更 方 便 编 辑 按 钮 图 片 。6.3 串 口 清 除 问 题 :
23、9在 串 口 通 信 中 遇 到 一 个 问 题 , 假 如 有 一 个 已 经 打 开 的 串 口 对 象 s, 在 没 有 关 闭 之 前 就 被clear 命 令 清 除 了 , 这 时 如 何 关 闭 s 对 应 的 串 口 ?遇 到 这 种 情 况 我 只 会 关 闭 matlab 再 重 新 打 开 , 这 样 太 麻 烦 了 , 不 知 道 有 没 有 更 好 的 办法 ?回 答 :delete(instrfindall)instrfindall 可 以 找 到 所 有 的 串 口6.4 二 进 制 文 件 相 关10*详 见 附 带 资 料 的 “ 详 细 问 题 与 解 决
24、方 案 ” 文 件 夹6.5 改 变 光 标 形 状问 题 :看 了 makesure5 写 的 “ 给 控 件 添 加 相 应 的 注 释 信 息 ” 学 会 了 怎 么 给 按 钮 加 注 释 , 现 在想 再 增 加 点 功 能 , 希 望 当 鼠 标 放 在 按 钮 上 时 光 标 能 改 变 形 状 ( 比 如 小 手 什 么 的 ) , 不 知 道 能不 能 实 现 , 希 望 高 手 指 点 下 。回 答 :你 查 找 一 下 figure 的 pointer 属 性 就 知 道 了 , 它 是 选 择 指 针 符 号 !备 注 :Pointer 属 性 有 : crosshai
25、r | fullcrosshair | arrow | ibeam | watch | topl |topr |botl | botr | left | top | right | bottom | circle | cross | fleur | custom | hand 可 以 任 取 一 个 尝 试 。6.6 获 取 当 前 路 径 问 题 :如 何 在 matlab 下 获 得 当 前 路 径 啊 ? 我 用 uigetdir 能 获 得 该 路 径 , 但 是 会 有 一 个 对 话 框出 来 , 有 什 么 办 法 能 不 显 示 对 话 框 而 获 得 当 前 路 径 吗 ?1
26、1回 答 :用 cd 命 令 即 可 。备 注 :用 cd 命 令 获 取 的 是 当 前 打 开 的 MATLAB 编 程 主 程 序 的 地 址 , 而 非 GUI 所 在 地 址 。 若是 已 编 译 完 成 , 打 开 生 成 EXE, 则 无 此 问 题 。 要 注 意 的 是 编 译 时 所 需 的 图 片 文 件 等 资 料 ,是 不 会 包 含 在 EXE 中 的 , 需 要 根 据 编 程 时 的 相 对 地 址 事 先 存 放 图 片 、 音 乐 等 , 才 可 正 常 打开 程 序 。6.7 将 MATLAB GUI生成 exe问 题 :如 何 要 使 MATLAB GU
27、I 生 成 EXE 文 件 , 方 便 在 不 同 PC 上 运 行 ?回 答 :一 、 生 成 独 立 可 执 行 的 程 序 ( exe 文 件 ) 步 骤1、 安 装 编 译 器 。 可 有 多 种 选 择 , matlab 自 带 了 一 个 LCC, 推 荐 使 用 VC+6.0, 我 基于 VS 2003 实 现 。2、 设 置 编 译 器 。 在 matlab 命 令 行 输 入 mbuild setup 以 及 mex setup, 选 择 安 装 的c 编 译 器 。3、 调 用 编 译 器 。 此 处 使 用 MATLAB 下 的 一 个 GUI 平 台 deploytoo
28、l 下 完 全 实 现 。 在 命令 窗 口 输 入 deploytool 即 可 看 到 。 具 体 使 用 方 法 请 Help。当 然 , 也 可 以 输 入 mcc -m filaname, filaname 为 要 转 成 exe 的 m 文 件 ;注 : 在 以 前 的 版 本 中 , 用 编 译 命 令 mcc -B sglcpp filaname; 自 2006 的 版 本 后 , 替 换 为mcc -m filename(多 m 文 件 联 合 编 译 成 exe 则 用 mcc -m filename1 filename2 filename3);4、 安 装 toolbox
29、compilerdeploywin32 目 录 下 的 MCRInstaller。 ( 2010b 版本 不 在 此 文 件 地 址 下 , 可 用 系 统 搜 索 功 能 对 全 安 装 目 录 搜 索 得 到 )二 、 脱 离 matlab 运 行 可 执 行 程 序MCR 是 由 matlab 的 运 行 环 境 , 占 用 不 到 300M 的 对 于 用 不 同 matlab 版 本 生 成 的 exe 文 件 ,MCR 版 本 也 会 有 不 同 , 因 此 , 在 程 序 打 包 时 , 最 好 将 相 应 版 本 的 MCR 一 起 打 包 。 MCR 环 境的 设 置 文 件
30、 存 放 目 录 如 下 :toolboxcompilerdeploywin32文 件 名 为 MCRInstaller.exe。 可 将 其 拷 贝 到 自 己 的 文 件 夹 中 , (7.0 以 前 的 版 本 是 mglinstaller.exe)。在 MATLAB 里 运 行 可 执 行 程 序 的 办 法 是 在 前 面 加 一 个 ! , 比 如 : !picshow, 后 缀 名 可 有 可无 。在 其 它 没 有 安 装 matlab 的 机 器 上 运 行 exe 文 件 前 :首 先 安 装 matlab 的 运 行 环 境 。 在 同 一 机 器 上 可 以 并 存 不
31、 同 版 本 的 matlab 环 境 (换 句 话 说 不 同 版本 不 兼 容 )。其 次 是 要 将 “ MCRinstaller.exe 安 装 目 录 runtimewin32” 这 个 路 径 添 加 到 该 计 算 机 的 环 境 变量 中 , 通 常 是 自 动 加 载 。如 果 没 有 , 也 可 手 动 安 装 , 添 加 的 方 法 是 :右 击 “ 我 的 电 脑 ” “ 属 性 ” “ 高 级 ” “ 环 境 变 量 ” “ 添 加 ” 指 定 一 个 变 量 名 , 然 后 将 上 述 路 径 复 制到 里 面 就 可 以 了 。在 安 装 过 程 中 会 弹 出
32、让 安 装 Microsoft.NETFramework 可 以 不 用 安 装 。12最 后 就 是 将 编 译 生 成 的 相 相 关 文 件 拷 贝 到 同 一 目 录 下 , 双 击 即 可 运 行 。目 前 此 方 法 可 完 全 运 行 在 没 有 安 装 MATLAB 以 及 C/C+的 电 脑 上 , 但 是 如 果 是 在 AMD 的CPU 可 以 运 行 , 但 是 不 会 出 现 任 何 MATLAB 编 译 的 界 面 。美 中 不 足 就 是 , 运 行 的 时 候 dos 的 那 个 黑 色 的 窗 口 一 直 存 在 。备 注 :黑 色 的 窗 口 消 除 办 法
33、 好 像 已 经 存 在 , 但 由 于 时 间 关 系 在 此 并 不 应 用 。6.8 录 入 图 片 劣 化问 题 :排 除 下 位 机 原 本 数 据 缺 损 , Matlab 串 口 通 信 时 , 连 续 多 次 ( 20 次 以 上 ) 读 入 数 据 时 , 会 产生 不 稳 定 现 象 , 造 成 图 像 劣 化 。回 答 :检 查 硬 件 串 口 , 更 换 串 口 较 短 线 , 可 改 善 传 输 质 量 。 但 具 体 解 决 方 法 尚 未 知 晓 , 只 用 串 口调 试 助 手 希 望 以 后 的 设 计 者 可 以 深 入 了 解 , 加 以 完 善 。6.9
34、 图 片 读 入 相 关 Matlab 常 用 图 像 操 作一 . 读 写 图 像 文 件1. imreadimread 函 数 用 于 读 入 各 种 图 像 文 件 , 如 : a=imread(e:w01.tif)注 : 计 算 机 E 盘 上 要 有 w01 相 应 的 .tif 文 件 。2. imwriteimwrite 函 数 用 于 写 入 图 像 文 件 , 如 : imwrite(a,e:w02.tif, tif )3. imfinfoimfinfo 函 数 用 于 读 取 图 像 文 件 的 有 关 信 息 , 如 : imfinfo(e:w01.tif)二 . 图 像
35、 的 显 示1. imageimage 函 数 是 MATLAB 提 供 的 最 原 始 的 图 像 显 示 函 数 ( 主 要 彩 色 显 示 图 象 ) , 如 :a=1,2,3,4;4,5,6,7;8,9,10,11,12;image(a);2. imshowimshow 函 数 用 于 灰 度 图 像 文 件 的 显 示 , 如 :i=imread(e:w01.tif);13imshow(i);3. colorbarcolorbar 函 数 用 显 示 图 像 的 颜 色 条 。通 常 , 颜 色 映 象 进 行 过 调 节 , 把 数 据 从 最 小 扩 展 到 最 大 , 也 就
36、是 说 整 个 颜 色 映 象 都 用 于 绘图 。 有 时 也 许 想 改 变 颜 色 使 用 的 方 法 。 函 数 caxis 代 表 颜 色 轴 , 因 为 颜 色 增 加 了 另 一 个 维 数 , 它允 许 对 数 据 范 围 的 一 个 子 集 使 用 整 个 颜 色 映 象 或 者 对 数 据 的 整 个 集 合 只 使 用 当 前 颜 色 映 象 的 一部 分 。cmin,cmax=caxis 返 回 映 射 到 颜 色 映 象 中 第 一 和 最 后 输 入 项 的 最 小 和 最 大 的 数 据 。 它 们通 常 被 设 成 数 据 的 最 小 值 和 最 大 值 。 比
37、 如 , 函 数 mesh(peaks) 会 画 出 函 数 peaks 的 网 格 图 , 并把 颜 色 轴 caxis 设 为 -6.5466, 8.0752, 即 Z 的 最 小 值 和 最 大 值 。 这 些 值 之 间 的 数 据 点 , 使 用 从颜 色 映 象 中 经 插 值 得 到 的 颜 色 。 如 :i=imread(e:w01.tif);imshow(i);colorbar;4 .figurefigure 函 数 用 于 设 定 图 像 显 示 窗 口 , 如 : figure(1); /figure(2);5.imagesc(a); caxis(-3 8) ; colo
38、rbar;标 尺 标 度 从 -3, 到 8 显 示 标 度 尺 。6.10 为 GUI程 序 添 加 启 动 画 面 *详 见 附 带 资 料 的 “ 详 细 问 题 与 解 决 方 案 ” 文 件 夹6.11 循 环 定 义 新 数 组问 题 :如 何 循 环 定 义 新 数 组我 想 定 义 n 个 数 组 ( A1, A2,A3,A4,A5.A48)for i=1:48Ai = zeros( (n+1)2 , 3 ) % 第 i 个 数 组end请 问 第 i 个 数 组 怎 么 取 名 , 总 不 能 叫 Ai 啊回 答 :a = 1:5;for i = 1:4eval(a num2
39、str(i) =a);enda1 =1 2 3 4 5a2 =1 2 3 4 5a3 =1 2 3 4 514a4 =1 2 3 4 5备 注 :eval 命 令 是 将 字 符 串 转 为 可 执 行 命 令 的 函 数 , 在 许 多 地 方 可 灵 活 运 用 。6.12 硬 盘 格 式 转 换 后 HostID 改 变 Matlab 的 license 失 效*详 见 附 带 资 料 的 “ 详 细 问 题 与 解 决 方 案 ” 文 件 夹6.13 获 取 系 统 时 间问 题 :话 说 俺 也 不 知 道 matlab 如 何 读 取 系 统 时 间 , 其 实 知 道 了 系 统
40、 时 间 的 话 , 显 示 应 该 是 比较 简 单 的 。回 答 :函 数 名 功 能 描 述 函 数 名 功 能 描 述now 以 数 字 形 式 给 出 当 前 日 期 和 时 间 weekday 星 期 函 数date 以 字 符 转 形 式 给 出 当 前 日 期 eomday 月 末 日 判 断 函 数clock 以 向 量 形 式 给 出 当 前 日 期 和 时 间 cputime 所 用 CPU 的 时 间datenum 日 期 的 数 字 形 式 转 换 tic 启 动 秒 表 计 时 器datestr 日 期 的 字 符 串 形 式 转 换 toc 读 取 秒 表 计 时
41、 器datevec 日 期 的 向 量 形 式 转 换 etime 使 用 时 间 函 数calendar 日 历 函 数 pause 暂 停 函 数6.14 用图片作为 axes 的 背 景 问 题 :如 何 用 图 片 作 为 axes 的 背 景 ?回 答 :之 前 实 现 了 在 figure 上 把 图 片 做 为 背 景 , 现 在 实 现 在 Guide 上 实 现 。其 实 很 简 单 , 就 是 在 Fcn 的 地 方 添 加 以 下 代 码 :ha=axes(units,normalized,position,0 0 1 1);uistack(ha,down)II=imre
42、ad(禾 木 01.bmp);image(II)colormap grayset(ha,handlevisibility,off,visible,off);另 外 如 果 要 把 那 些 按 钮 等 的 背 景 也 改 变 , 也 是 在 此 处 添 加 相 应 代 码 就 可 。比 如 下 面 代 码 把 按 钮 的 背 景 改 变 了 ( 此 方 法 已 有 人 在 论 坛 发 过 帖 子 , 请 自 己 搜 索 ) :I=imread(buttoncdata.bmp);set(handles.pushbutton1,cdata,I);15备 注 :需 要 把 axes 控 件 的 “un
43、its”属 性 设 置 为 “normalized”才 可 以 的 全 屏 显 示 背 景fread 读 入 二 进 制 文 档 的 数 据 要 经 str2num、 reshape、 转 置 等 处 理 才 可 显 示 , 且 显 示 时需 要 用 GUI 的 Axes 控 件 , 才 能 固 定 图 像 实 际 显 示 大 小 , 即 同 5*5cm 的 Axes 显 示 的 10*10与 20*20 分 辨 率 的 图 像 的 实 际 显 示 大 小 是 一 样 的 。详 见 附 带 资 料 的 “ 详 细 问 题 与 解 决 方 案 ” 文 件 夹6.15 在一个 Figure 中 画
44、 多 幅 图 问 题 :Matlab 关 于 在 一 个 figure 中 画 多 幅 图 , colormap 的 设 置 问 题大 家 好 , 请 教 一 个 问 题 。 我 要 在 一 个 figure 里 面 画 三 张 图 ,subplot(3,1,1), subplot(3,1,2), subplot(3,1,3)见 附 件 。-但 是 这 三 张 图 的 colormap 是 不 一 样 的 , 比 如 说 , 第 一 和 第 二 张 图都 用 colormap1, 第 三 张 图 用 colormap2。 但 是 当 我 每 次 定 义 完 第三 张 图 的 colormap
45、之 后 , 前 两 张 图 的 colormap 也 就 变 成 和 第 三 张图 一 样 的 了 。回 答 :在 matlab 里 面 , 每 个 figure 只 能 显 示 一 种 colormap 的 图 片 , 有 两 种 colormap 肯 定 是不 行 的 。可 以 先 把 图 片 显 示 到 另 一 个 figure 内 , 然 后 用 getframe 函 数 取 得 其 图 形 数 据 , 再 用imshow 等 函 数 显 示 到 同 一 figure 内 。figure(1);imshow(pic1);f1=getframe(gcf);figure(2);imshow
46、(pic2);f2=getframe(gcf);figure(3);imshow(pic3);f3=getframe(gcf);close all;figure(4);subplot(131);imshow(f1.cdata);subplot(132);imshow(f2.cdata);subplot(133);imshow(f3.cdata);16第七章 总 结 与 展 望 作 为 一 个 上 位 机 软 件 , 本 程 序 的 完 善 程 度 远 远 不 够 。 我 们 的 目 标 是 软 件 实 现 PID 控 制 的 实现 、 智 能 的 调 试 , 从 而 节 省 作 品 完 成 时
47、 间 , 提 高 小 车 运 行 速 度 与 稳 定 性 。 但 受 技 术 水 平 及 时 间所 限 , 现 阶 段 只 能 完 成 以 上 部 分 , 供 后 来 者 参 考 。 另 外 , 除 文 档 外 本 人 也 将 学 习 制 作 工 程 中 用到 的 相 关 资 料 做 了 一 些 整 理 , 打 包 在 附 件 中 , 希 望 能 对 各 位 有 所 帮 助 。最 后 , 多 谢 王 日 明 老 师 提 供 我 这 样 一 个 机 会 动 手 学 习 , 祝 愿 我 们 的 同 学 在 技 术 道 路 上 披 荆斩 棘 , 勇 创 高 峰 !17附 录 *1.串 口 程 序%
48、该 回 调 函 数 设 置 以 中 断 方 式 进 行 串 口 读 写 , 其 中 断 触 发 事 件 为 输 入 缓 存 达 到% 3873 字 节 , 中 断 服 务 程 序 调 用 m 函 数 mycallback% - Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global s; %串 口 变 量 s18global control; %串 口 变 量 s 的 使 能 标 志global com_times; %串 口 连 续 执 行 次 数 , 即 接 收 数 据 块 块 数group_str = get(handles.popupmenu1,String); %小 组 类 型 字 符 列 表groupvalu