matlab程式设计与应用(编辑修改稿)内容摘要:

一 个 M档 案 若要一次 执 行大量的 MATLAB 命令, 可将这 些命令存放于一 个扩 展名 为 m的档 案,并在 MATLAB 提示 号 下 键入此档 案的主檔名即可。 此种包含 MATLAB 命 令的档 案都以m 为扩 展名,因此通 称 M档 案( Mfiles)。 例如一 个 名 为 的 M 档 案,包含一 连 串的 MATLAB 命令,那么只要直 接键入 test,即 可执 行其所包含的命令: pwd % 显 示 现 在的目 录 ans = D:\MATLAB5\bin cd c:\data\mlbook % 进 入 所在的目 录 type % 显 示 的 内 容 % This is my first test Mfile. % Roger Jang, March 3, 1997 fprintf(39。 Start of !\n39。 )。 for i = 1:3, fprintf(39。 i = %d i^3 = %d\n39。 , i, i^3)。 end 第 13 页 共 36 页 fprintf(39。 End of !\n39。 )。 test % 执 行 Start of ! i = 1 i^3 = 1 i = 2 i^3 = 8 i = 3 i^3 = 27 End of ! 小提示:第一注解行( H1 help line) 的前 两 行是注解,可以使程序易于了解与管理。 特 别 要 说 明的是,第一注解行通常用 来简 短 说 明此 M档 案的功能,以便 lookfor 能以 关键词 比 对 的方式 来找出此 M 档 案。 举 例 来说 , 的第一注解行包含 test 这个 字,因此如果 键入lookfor test, MATLAB 即可列出所有在第一注解行包含 test 的 M档 案,因而 也 会被 列名在 内。 严格来说 , M档 案可再 细 分 为 命令集( Scripts)及函 数( Functions)。 前述的 即 为 命令集,其效用和 将 命令 逐一输 入完全一 样 ,因此若在命令集可以直接使用工作空 间 的 变 量,而且在命令集 中设 定的 变 量,也都在工作空 间 中看得到。 函数则 需要 用到输 入自 变量 ( Input arguments)和 输 出自 变量 ( Output arguments) 来传递 信息, 这就 像是 C语 言的函 数 ,或是 FORTRAN 语 言的子程序( Subroutines)。 举 例 来说 ,若要 计 算一 个正 整 数 的 阶 乘( Factorial), 我们 可以 写 一 个 如下的 MATLAB 函 数 并 将 之存 盘于 : function output = fact(n) % FACT Calculate factorial of a given positive integer. output = 1。 for i = 1:n, output = output*i。 end 其中 fact 是函 数 名, n是 输 入自 变 量, output 是 输 出自 变 量,而 i则是 此函 数用到 的 暂时变 量。 要 使用此函 数 ,直 接键入函数 名及适 当输 入自 变 量值即可: y = fact(5) y = 120 第 14 页 共 36 页 ( 当然 ,在 执 行 fact 之前,你必 须先进 入 所在的目 录。 )在 执 行 fact(5)时 , MATLAB 会跳 入一 个下层的暂时 工作空 间 ( Temperary workspace), 将变 量 n的值 设定为 5,然后 进 行各 项函数 的 内 部 运 算,所有 内 部 运 算所 产 生的 变 量(包含输 入自 变 量 n、 暂时变 量 i,以及 输 出自 变 量 output)都存在此 暂时 工作空 间 中。 运 算完 毕 后, MATLAB 会将 最后 输 出自 变 量 output 的值 设 定 给 上 层的变 量 y,并 将清除此 暂时 工作空 间 及其所含的所有 变 量。 换 句 话说 ,在呼叫函 数时 ,你只能 经 由输 入自 变 量 来 控制函 数 的 输 入, 经 由 输 出自 变 量 来 得到函 数 的 输 出,但所有的 暂时变 量都 会随着 函 数 的 结 束而消失,你并 无 法得到它 们 的值。 小提示:有 关阶 乘函 数 前面(及后面)用到的 阶 乘函 数 只是 纯 粹用 来说 明 MATLAB 的函 数观 念。 若 实际 要计 算一 个正 整 数 n的 阶 乘(即 n!) 时 ,可直接 写 成 prod(1:n),或是直接呼叫gamma 函 数 : gamma(n1)。 MATLAB 的函 数 也可以是 递 式的( Recursive),也就是 说 ,一 个 函 数 可以呼叫它本身。 举 例 来说 , n! = n*(n1)!,因此前面的 阶 乘函 数 可以改成 递 式的 写 法: function output = fact(n) % FACT Calculate factorial of a given positive integer recursively. if n == 1, % Terminating condition output = 1。 return。 end output = n*fact(n1)。 在 写 一 个递 函 数时 ,一定要包含 结 束 条 件( Terminating condition),否 则 此函 数将会 一再呼叫自己, 永远 不 会 停止,直到 计 算机的 内 存被耗 尽为止。 以上例而言, n==1 即 满 足 结 束 条 件,此 时我们 直接 将 output 设为 1,而不再呼叫此函 数 本身。 1搜 寻 路 径 在前 一节 中, 所在的目 录 是 d:\mlbook。 如果不先 进 入 这个 目 录, MATLAB 就找不到你要 执 行的 M档 案。 如果希望 MATLAB 不 论 在 何处都能执 行 ,那么就必 须将 d:\mlbook 加入 MATLAB 的搜 寻 路 径 ( Search path)上。 要 检视 MATLAB 的搜 寻 路 径 , 键入 path 即可 : path MATLABPATH d:\matlab5\toolbox\matlab\general d:\matlab5\toolbox\matlab\ops 第 15 页 共 36 页 d:\matlab5\toolbox\matlab\lang d:\matlab5\toolbox\matlab\elmat d:\matlab5\toolbox\matlab\elfun d:\matlab5\toolbox\matlab\specfun d:\matlab5\toolbox\matlab\matfun d:\matlab5\toolbox\matlab\datafun d:\matlab5\toolbox\matlab\polyfun d:\matlab5\toolbox\matlab\funfun d:\matlab5\toolbox\matlab\sparfun d:\matlab5\toolbox\matlab\graph2d d:\matlab5\toolbox\matlab\graph3d d:\matlab5\toolbox\matlab\specgraph d:\matlab5\toolbox\matlab\graphics d:\matlab5\toolbox\matlab\uitools d:\matlab5\toolbox\matlab\strfun d:\matlab5\toolbox\matlab\iofun d:\matlab5\toolbox\matlab\timefun d:\matlab5\toolbox\matlab\datatypes d:\matlab5\toolbox\matlab\dde d:\matlab5\toolbox\matlab\demos d:\matlab5\toolbox\tour d:\matlab5\toolbox\simulink\simulink d:\matlab5\toolbox\simulink\blocks d:\matlab5\toolbox\simulink\simdemos d:\matlab5\toolbox\simulink\dee d:\matlab5\toolbox\local 此搜 寻 路 径会 依已安 装 的工具箱( Toolboxes)不同而有所不同。 要查 询 某一命令是在搜 寻 路 径 的 何处 ,可用 which 命令: which expo 第 16 页 共 36 页 d:\matlab5\toolbox\matlab\demos\ 很 显 然 c:\data\mlbook 并不在 MATLAB 的搜 寻 路 径 中,因此 MATLAB 找不到 这个 M 档 案: which test c:\data\mlbook\ 要 将 d:\mlbook 加入 MATLAB 的搜 寻 路 径,还 是使用 path 命令: path(path, 39。 c:\data\mlbook39。 )。 此 时 d:\mlbook。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。