|
1999年1 月4 日第1期《电脑与生活》
工 程 计 算 与 数 值 分 析 工 具:MATLAB
广 州 中 国 电 子 产 品 可 靠 性 与 环 境 试 验 研 究 所 (510610) 黄 茂 生
MATLAB 的 发 展
---- MATLAB 是Mathworks 公 司 推 出 的 一 套 工 程 计 算 及 数 值 分 析 软 件。 由 于 功 能 强 易 使 用, 因 此, 在 工 业、 电 子、 医 疗、 建 筑 等 领 域 得 到 了 广 泛 应 用, 特 别 是 生 物 医 疗 工 程、 图 像 信 号 处 理、 语 音 信 号 处 理、 雷 达 工 程、 信 号 分 析、 时 间 序 列 分 析、 控 制 论、 系 统 论 等 无 不 以 它 作 为 分 析 工 具。MATLAB 集 可 靠 的 数 值 运 算、 图 像 与 信 号 处 理、 图 形 显 示、 可 视 化 图 形 用 户 界 面 设 计 于 一 体。 此 外 还 提 供 了 与 其 他 高 级 语 言 如C、FORTRAN 的 接 口。 最 新 版 本MATLAB 5.0 在 原 有 基 础 上 增 加 了 彩 色 代 码 编 辑 器 和 程 序 调 试 器 等。
----这 些 新 增 功 能 和 特 性 简 述 如 下:
----1. 图 形 按 钮 菜 单 功 能
----在 原 来 下 拉 菜 单 功 能 基 础 上,MATLAB 5.0 增 加 了 图 形 按 钮 菜 单 功 能, 例 如New、Open、Cut、Copy、Paste、Undo、Workspace Browser、Path Browser、New Simulink Model 等。
----2. 设 置 文 件 路 径 功 能
----利 用 该 功 能 可 把 用 户 文 件 保 存 路 径 加 入 到MATLAB 的 指 向 路 径 列 表 中, 从 而 在MATLAB 环 境 中 无 须 指 定 路 径 就 可 以 调 用 和 运 行 用 户 编 写 的 程 序 和 函 数。
----3. 图 形 用 户 界 面 向 导
----利 用 图 形 用 户 界 面 生 成 向 导, 非 常 容 易 地 设 计 程 序 界 面, 类 似Visual Basic 的 可 视 化 设 计 风 格 , 可 方 便 地 在 界 面 上 添 加 下 拉 菜 单、 按 钮、 无 线 按 钮、 检 取 框、 编 辑 文 本 框、 坐 标 系 等, 轻 松 设 计 具 有Windows 风 格 的 图 形 用 户 界 面。
----4. 彩 色 代 码 编 辑 器 和 程 序 调 试 器
----MATLAB 5.0 增 加 了 彩 色 代 码 编 辑 器, 可 方 便 地 编 辑、 调 试 应 用 程 序。
----5. 提 供 帮 助 文 件
----MATLAB 5.0 提 供 了 两 种 很 流 行 的 帮 助 文 件 格 式:PDF 和HTML 格 式, 可 帮 助 主 题 窗 口 提 供 关 键 字 查 找 功 能。
MATLAB 5.0 功 能 和 特 点
----1 . 数 值 分 析 和 工 程 计 算
----· 矩 阵 分 析 和 处 理:MATLAB 提 供 了 对 矩 阵 进 行 分 析 和 处 理 的 全 面 的 函 数, 比 如 矩 阵 翻 转 函 数fliplrc()、 正 交 空 间 函 数orth() 等。
----· 数 据 处 理 和 基 础 统 计: 利 用MATLAB 提 供 的 基 本 数 值 分 析 函 数, 可 进 行 数 据 分 析 工 作。 这 些 函 数 包 括 最 大 值、 最 小 值、 均 值、 标 准 差、 中 值、 排 序 分 类、 总 和、 类 积、 类 加 和、 差 分 函 数、 直 方 图、 列 表 等。
----·FFT、 相 关 函 数 和 协 方 差: 对 信 号 处 理 而 言, 求 拉 氏 变 换、 傅 立 叶 变 换 及 其 反 变 换、 Z 变 换、 协 方 差 和 卷 积, 用MATLAB 的 通 用 函 数, 无 须 考 虑 其 算 法 就 可 实 现。
----· 稀 疏 矩 阵 处 理:MATLAB 4.0 以 后 版 本 成 功 地 引 入 了 稀 疏 矩 阵 的 表 达 方 法, 定 义 了 大 量 的 稀 疏 矩 阵 处 理 函 数, 并 针 对 稀 疏 矩 阵 处 理 建 立 了 专 门 的 稀 疏 矩 阵 处 理 工 具 箱。
----· 三 角 函 数 和 其 他 基 本 数 字 函 数:MATLAB 提 供 了 全 套 的 三 角 函 数 和 其 他 基 本 的 数 字 函 数, 其 函 数 的 命 名 方 法 和 数 学 表 达 方 法 完 全 一 致。
----· 贝 塞 尔、 β 和 其 他 专 门 函 数:MATLAB 提 供 了 大 量 的 专 门 函 数, 如 贝 塞 尔 函 数、 β 函 数 等。
----· 线 性 和 微 分 方 程 解 算 器:MATLAB 提 供 了 常 用 的Gauss 消 元 法、LU 分 解 法、 基 于 奇 异 值 分 解 法 等 的 实 现 函 数; 对 常 微 分 方 程 提 供 了 多 个 求 解 函 数, 如 采 用 二 阶/ 三 阶 的RFT 方 法 和 采 用 四 阶/ 五 阶 的RFT 方 法 的 求 解 函 数ode23()、ode45()。
----2 . 图 形 和 可 视 化 技 术
----· 方 便 的2D、3D 作 图: 利 用MATLAB 内 部 函 数, 可 方 便 地 作 出2D、3D 的 分 散 曲 面 图、 多 边 形、 网 格 图、 轮 廓 图 和 直 方 图, 而 无 须 考 虑 机 器 的 硬 件 类 型。
----· 屏 蔽 表 面 图、 光 照 模 型、 摄 像 机 控 制、 笛 卡 儿 坐 标 对 象: 在MATLAB 里 可 用 光 照 模 型 设 定 阴 影 方 向; 可 用 摄 像 机 任 意 控 制 观 察 角 度; 可 进 行 各 种 坐 标 系 绘 图。
----· 动 画 制 作 和 语 音 处 理:MATLAB 提 供 了 基 本 的 动 画 和 语 音 处 理 函 数, 包 括:moviein()、movie()、sound()、saxis()、auwrite()、auread()、mu2lin()、in2mu()。 利 用 这 些 函 数 可 进 行 动 画 制 作 和 播 放。
----· 文 本 标 注: 在 图 形 上 可 进 行 坐 标 轴 标 注、 图 形 标 题 标 注 以 及 在 任 意 坐 标 放 置 文 本 注 释。
----3 . 编 程 和 数 据 结 构
----MATLAB 的 函 数 和 命 令 可 实 现C 或FORTRAN 语 言 的 几 乎 全 部 功 能, 而 且 开 发 应 用 程 序 的 周 期 大 大 缩 短。
----· 彩 色 代 码 编 辑 器 和 调 试 器: 利 用 自 带 的 彩 色 代 码 编 辑 器 编 写 应 用 程 序 时, 内 部 命 令、 函 数 及 各 种 属 性 值 用 不 同 的 颜 色 表 示, 可 大 大 提 高 编 程 效 率。 程 序 调 试 器 在 调 试 程 序 时 可 设 置 单 步 执 行、 错 误 停 止、 错 误 报 警、 断 点 等。
----· 多 维 数 组 和 用 户 自 定 义 结 构:MATLAB 使 用 变 量 前 无 须 先 定 义、 初 始 化, 对 多 维 数 组 变 量 的 操 作 和 使 用 普 通 变 量 一 样, 它 既 能 处 理 本 身 已 定 义 数 据 结 构 又 允 许 用 户 自 定 义 数 据 类 型。 用 户 自 定 义 数 据 类 型 包 括: 标 量、 矩 阵 混 合 结 构 及 多 维 数 组 等。
----· 面 向 对 象 编 程:MATLAB 支 持 面 向 对 象 编 程。 图 形 窗 口、 坐 标 轴、 菜 单、 按 钮、 编 辑 文 本 框 等 均 有 一 个 操 作 句 柄, 每 个 对 象 的 属 性 值 都 可 在 设 计 时 设 定, 也 可 在 程 序 运 行 过 程 中 通 过 句 柄 用set() 函 数 进 行 动 态 设 置 和 更 改。
----· 流 程 控 制 器(If、While、For、Switch ): MATLAB 提 供 了 标 准 流 程 控 制 结 构, 如 条 件 转 移 语 句、 循 环 语 句 等 一 些 常 用 的 控 制 语 句。
----· 字 符 串 处 理: MATLAB 拥 有 各 种 的 字 符 串 处 理 函 数, 如 数 值 转 字 符 串 函 数、 字 符 串 比 较 函 数、 字 符 串 与 数 值 转 换 函 数 和 十 六 进 制 转 换 函 数。
----·ASCII 和 二 进 制 文 件 读 写。
----4 . 图 形 用 户 界 面 工 具
----· 交 互 图 形 用 户 界 面(GUI) 生 成 器( 向 导):MATLAB 5.0 可 利 用 鼠 标 点 击 和 拖 曳, 在 图 形 窗 口 建 立 坐 标 系、 按 钮、 编 辑 文 本 框 以 及 捡 取 框 等。 生 成 向 导 可 自 动 地 把 设 计 的 界 面 生 成MATLAB 可 识 别 和 运 行 的 .M 文 件。
----· 下 拉 式 和 弹 出 式 菜 单: 图 形 用 户 界 面 生 成 向 导, 包 含 一 个 菜 单 编 辑 器, 它 可 生 成 下 拉 菜 单 和 弹 出 式 菜 单。 也 可 以 用uicontrol() 函 数 在 图 形 窗 口 建 立 菜 单。 两 者 不 同 之 处 在 于 前 者 自 动 生 成 代 码, 后 者 手 工 编 写 代 码。
----· 鼠 标 事 件 和 回 调 函 数:MATLAB 图 形 窗 口 可 以 捕 捉 鼠 标 事 件, 自 动 识 别 左 右 键 动 作, 可 编 写 函 数 来 响 应 鼠 标 事 件, 增 加 应 用 程 序 功 能。
MATLAB 5.0 应 用 实 例
----1. 求 矩 阵 特 殊 参 数
1 2 3
矩 阵A= 4 5 6 , 求A 的 转 置 矩 阵B、 秩C、 特 征 多 项 式D。
7 8 9
在MATLAB 命 令 窗 口 输 入 以 下 语 句:
A={1,2 3;4 5 6;7 8 9〗;
B=A';
C= rank(A);
D= poly(A);
1 4 7
结 果 为:B= 2 5 8 ,
3 6 9
C=2,
D=[1.0000 -15.0000 -18.0000 0.0000]
---- 2. 非 线 性 方 程 求 解
----求 解 非 线 性 方 程 组: sinx +y2 +lnz -7=0
---- ----3x +2y -z3 +1=0
---- ----x +y +z -5=0
----(1) 编 写 上 述 方 程 组 的 描 述 函 数:
----单 击"File" →"New" →"M -file", 创 建 一 个 新 文 件, 该 文 件 是 一 个 函 数, 作 用 是 描 述 上 述 非 线 性 方 程 组, 输 入:
function m=miaoshu(n) % 定 义 描 述 函 数
global k;k=k +1; % 定 义 全 局 变 量k
m(1)=sin(n(1)) +n(2)^2 +log(n(3)) -7;
% 描 述 方 程 组,n 为 向 量。
m(2)=3 *n(1) +2^n(2) -n(3)^3 +1;
%n(1) 代 表x,n(2) 代 表y。
m(3)=n(1) +n(2) +n(3) -5;
单 击"File" →"Save", 把 文 件 命 名 为miaoshu.m 保 存。
----(2) 调 用MATLAB 求 解 多 元 方 程 的 求 解 函 数 fsolve(), 求 出 该 方 程 的 根。
----在MATLAB 命 令 窗 口 输 入 以 下 语 句:
----([1 1 1] 为x、y、z 的 初 值)
----global k;k=0;a=fsolve('miaoshu',[1 1 1])
----则MATLAB 命 令 窗 口 马 上 显 示 计 算 结 果: x=0.5991, y=2.5939, z=2.0050。
----制 作 图 形 用 户 界 面
----3. 设 计 如 下 图 的 界 面
----制 作 图 形 用 户 界 面 设 计 如 下 图 的 界 面
----(1) 单 击"File" →"Show GUI Layout Tool", 打 开 图 形 用 户 界 面 生 成 向 导, 单 击"Add Figure" 按 钮, 建 立 一 个 新 的 图 形 界 面 窗 口, 其 默 认 名 为"Figure No.1"。
----(2) 单 击"Menu Editor" 按 钮, 打 开 菜 单 编 辑 器, 在 列 表 框 中 选 中"Figure ( #1) Fig1" 项, 单 击"New Menu" 按 钮 建 立 下 拉 式 菜 单, 在"Label" 项 输 入" 菜 单"。
----(3) 单 击"New Menu" 按 钮, 在"Label" 项 输 入" 作 图"; 在"Callback" 项 输 入'draw'。
----(4) 单 击"New Menu" 按 钮, 在"Label" 项 输 入" 关 闭"; 在"Callback" 项 输 入'close', 并 单 击"<" 键, 使" 作 图" 和" 关 闭" 成 为" 菜 单" 的 下 一 级 子 菜 单, 关 闭 菜 单 编 辑 器。
----(5) 单 击 图 形 用 户 界 面 生 成 向 导 界 面 上 的"Pushbotton" 按 钮, 然 后 在Figure No.1 窗 口 拖 曳 放 置 两 个 按 钮, 并 分 别 双 击 这 两 个 按 钮。 其 中 一 个"String" 属 性 为'draw';"Callback" 属 性 为'draw';"String" 属 性 为'close';"Callback" 属 性 为'close'。
----(6) 单 击"Axes" 按 钮, 然 后 在Figure No.1 窗 口 拖 曳 放 置 一 个 坐 标。
----(7) 单 击Figure No.1 窗 口 的"File" →"Save", 把 文 件 命 名 为"windows1.m" 保 存。 然 后 关 闭Figure No.1 窗 口、 图 形 用 户 界 面 生 成 向 导 窗 口。
----(8) 单 击"File" →"Open", 打 开 文 件 windows1.m, 在 文 件 开 头 部 分 加 入 以 下 语 句:
----draw='t=0:0.1:10;plot(t,sin(t));';
----(9) 保 存 文 件。 在MATLAB 命 令 窗 口 键 入window1, 运 行window1.m 即 可 出 现 上 图 所 示 的 界 面。 单 击"draw" 按 钮 或 选 择" 菜 单" 的" 作 图", 就 可 以 作 出sin(t) 曲 线 图, 单 击"close" 按 钮 或 选 择" 菜 单" 的" 关 闭", 程 序 关 闭。
|