




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章MATLAB基本编程 4 1M文件入门4 2程序控制4 2 1顺序结构4 2 2选择结构4 2 3分支结构4 2 4模块4 2 5for循环结构4 2 6while循环结构4 2 7人机交互命令 m文件简介 用户如想灵活应用matlab去解决实际问题 充分调用matlab的科学技术资源 就需要编辑m文件包含matlab语言代码的文件称为m文件 其扩展名为m 编辑m文件可使用各种文本编辑器 M文本编辑器M文件的基本属性M文件的组成部分脚本式M文件函数式M文件 4 1M文件入门 1 M文本编辑器 M文件的语法类似于一般高级语言 是一种程序化的编程语言 但是 与传统的高级语言相比 M文件又有自己的特点 它只是一个简单的ASC 型码文本文件 因此 它的语法比一般的高级语言要简单 程序也容易调试 并且有很好的交互性 M文件的基本属性 M文件有两种 一种为脚本式 Script 一种为函数式 Function 函数M文件必须满足一些标准 另外 它们还应该满足一些MATLAB7的属性 主要有以下几点 函数式M文件名和出现在文件的第一行的函数名必须相同 实际上 MATLAB7忽略了第一行的函数名 并且根据存储在硬盘上的文件名来执行函数 M文件的组成部分 函数式M文件的组成部分 调出Medit窗口 在里边输入如下内容 functionf fact n 函数的定义行 Computeafactorialvalue H1行 FACT N returnsthefactorialofN 帮助文本 usuallydenotedbyN Putsimply FACT N isPROD 1 N 注释f prod 1 n 函数体 M文件的组成部分及其功能 M文件的组成部分及其功能 2 脚本式M文件 用户可以将需要重复输入的所有命令按顺序放到一个扩展名为m的文本文件下 每次运行时只要输入该M文件的文件名即可 用户自己创建的M文件的文件名要避免与MATLAB7的内置函数和工具箱中的函数重名 以免发生内置函数被替换的情况 脚本式M文件举例 fori 1 10a sin i fprintf sin d i fprintf 12 8f n a end 脚本式M文件举例 本脚本式M文件绘制一个正弦曲线 此文件用于绘制 2 pi 2 pi 区间的正弦曲线图x 2 pi 0 05 2 pi y sin x plot x y c legend 正弦曲线图 3 函数式M文件 函数式M文件一般都要自带参数 并且有返回结果 函数式M文件的第一行都是以function开始 说明此文件是一个函数 函数式M文件中的变量都不是全局变量 仅在函数运行期间有效 函数运行完毕之后 它所定义的变量将从工作区间中清除 脚本式没有函数名 函数式有函数名 一般要自带参数 返回结果 函数式M文件举例 例11 4判断某一年是否为闰年 解 调出Medit窗口 在里边输入如下内容 该函数用于判断某一年是否为闰年 使用格式为isleapea y 其中y是用户所要计算的年份functionisleapyear year sign 0 ifrem year 4 0sign sign 1 end ifrem year 100 0sign sign 1 endifrem year 400 0sign sign 1 endifsign 1fprintf 4dyearisaleapyear n year elsefprintf 4dyearisnotaleapyear n year end 函数文件的基本结构函数文件由function语句引导 其基本结构为 function 输出形参表 函数名 输入形参表 注释说明部分函数体语句 说明 1 关于函数文件名 函数文件名与函数名也可以不相同 当两者不同时 MATLAB将忽略函数名而确认函数文件名 因此调用时使用函数文件名 2 关于注释说明部分 注释说明包括三部分内容 紧随函数文件引导行之后以 开头的第一注释行 第一注释行及之后连续的注释行 与在线帮助文本相隔一空行的注释行 3 关于return语句 执行到该语句就结束函数的执行 程序流程转至调用该函数的位置 通常 在函数文件中也可不使用return语句 这时在被调函数执行完成后自动返回 例编写函数文件求半径为r的圆的面积和周长 function s p fcircle r CIRCLEcalculatetheareaandperimeterofacircleofradiir r圆半径 s圆面积 p圆周长 2001年7月30日编s pi r r p 2 pi r 将以上函数文件以文件名fcircle m存入c matlab6p5 work下 然后在MATLAB命令窗口调用该函数 s p fcircle 10 函数调用函数调用的一般格式是 输出实参表 函数名 输入实参表 例利用函数文件 实现直角坐标 x y 与极坐标 之间的转换 函数文件tran mfunction rho theta tran x y rho sqrt x x y y theta atan y x 调用tran m的命令文件main1 m x input Pleaseinputx y input Pleaseinputy rho theta tran x y rho theta M文件的建立与编辑1 建立新的M文件 1 菜单操作 MATLAB命令窗口的File菜单 New菜单项 M file命令 2 命令操作 在MATLAB命令窗口输入命令edit 3 命令按钮操作 单击MATLAB命令窗口工具栏上的 新建 命令按钮 2 编辑已有的M文件 数据文件 matmat文件是matlab以标准二进制格式保存的数据文件 可将工作空间中有用的数据变量保存下来 mat文件的生成和调用是由函数save和load完成的 例如 loadgatlin 例建立一个命令文件将变量a b的值互换 然后运行该命令文件 首先建立命令文件并以文件名exch m存盘 clearall a 1 10 b 11 12 13 14 15 16 17 18 c a a b b c ab然后在MATLAB的命令窗口中输入exch 将会执行该命令文件 exch 例建立一个函数文件将变量a b的值互换 然后在命令窗口调用该函数文件 首先建立函数文件fexch m function a b fexch a b c a a b b c 然后在MATLAB的命令窗口调用该函数文件 clearall x 1 10 y 11 12 13 14 15 16 17 18 x y fexch x y 函数式M文件变量以局部变量的形式存储在文件中 脚本式M文件则与之截然不同 它中改变的值要带回到工作区间来 见p181例10 5 数据的输入输出 input函数调用格式为 A input 提示信息 选项 其中提示信息为一个字符串 用于提示用户输入什么样的数据 A input A 如果在input函数调用时采用 s 选项 则允许用户输入一个字符串 例如 想输入一个人的姓名 可采用命令 xm input What syourname s disp函数调用格式为 disp 输出项 其中输出项既可以为字符串 也可以为矩阵 注意 用disp函数显示矩阵时将不显示矩阵的名字 而且其格式更紧密 且不留任何没有意义的空行 b 234567890 disp b 234567890 disp JanFebMar disp rand 5 3 JanFebMar0 95010 76210 61540 23110 45650 79190 60680 01850 92180 48600 82140 73820 89130 44470 1763 程序如下 a input a b input b c input c d b b 4 a c x b sqrt d 2 a b sqrt d 2 a disp x1 num2str x 1 x2 num2str x 2 例求一元二次方程ax2 bx c 0的根 4 2 程序控制 最简单的程序控制就是顺序结构 用户依次输入命令语句即可 MATLAB7语言还提供了4种高级的控制结构 它们是 if else end结构 switch case otherwise end结构 for循环和while循环 4 2 1顺序结构 顺序结构是最简单的程序结构 用户在编写好程序之后 系统将按照程序的物理位置顺次执行 a 1 b 2 c 3 s1 a bs2 s1 cs3 s2 s2 4 2 2选择结构 if语句在MATLAB中 if语句有3种格式 1 单分支if语句语句格式为 if条件语句组end当条件成立时 则执行语句组 执行完之后继续执行if语句的后继语句 若条件不成立 则直接执行if语句的后继语句 例 程序如下 functionf ifone x ifx 0fprintf fisapositivenumber n x end 2 双分支if语句语句格式为 if条件语句组1else语句组2end当条件成立时 执行语句组1 否则执行语句组2 语句组1或语句组2执行后 再执行if语句的后继语句 例 程序如下 functioniftow x ifx 0fprintf fisapositivenumber n x elsefprintf fisnotapositivenumber n x end 例计算分段函数值 程序如下 x input 请输入x的值 ifx 10y cos x 1 sqrt x x 1 elsey x sqrt x sqrt x endy 例输入数n 判断其奇偶性 程序如下 n input n ifrem n 2 0A even elseA odd end 3 多分支if语句语句格式为 if条件1语句组1elseif条件2语句组2 elseif条件m语句组melse语句组m 1end 例输入一个字符 若为大写字母 则输出其后继字符 若为小写字母 则输出其前导字符 若为数字字符则输出其对应的数值 若为其他字符则原样输出 c input 请输入一个字符 s ifc A end 例题 functionf ifthree x ifx 100fprintf fisagreatpositivenumber n x elseifx 10fprintf fisabigpositivenumber n x elseifx 10fprintf fisasmallpositivenumber n x elseifx 0fprintf fisazeronumber n x elsefprintf fisaminusnumber n x end 4 2 3分支语句其语句格式为 switch表达式case表达式1语句组1 case表达式m语句组motherwise语句组m 1end 例判断输入数n的奇偶性 n input n switchmod n 2 case1A odd case0A even otherwiseA null end functionlower1 method switchmethodcase linear bilinear disp Methodislinear case cubic disp Methodiscubic case nearest disp Methodisnearest otherwisedisp Unknowmethod end 例 price input 请输入商品价格 switchfix price 100 case 0 1 rate 0 case 2 3 4 rate 3 100 casenum2cell 5 9 rate 5 100 casenum2cell 10 24 rate 8 100 casenum2cell 25 49 rate 10 100 otherwiserate 14 100 endprice price 1 rate 例某商场对顾客所购买的商品实行打折销售 已知打折标准 求所售商品的实际销售价格 课堂练习 1 3 x x 5 x 0 y 3 x x 5 x 0 写成一个函数式m文件 并输出y的值 答案 function y qiuy x ifx 0y 3 x x 5 elsey 3 x x 5 end 4 2 4模块 错误控制语句 语句格式为 try语句组1catch语句组2endtry语句先试探性执行语句组1 如果语句组1在执行过程中出现错误 则将错误信息赋给保留的lasterr变量 并转去执行语句组2 这种试探性执行语句是其他高级语言所没有的 例X magic 4 Y ones 4 3 tryZ X Y catchZ nan disp XandYisnotconformable end 例矩阵乘法运算要求两矩阵的维数相容 否则会出错 先求两矩阵的乘积 若出错 则自动转去求两矩阵的点乘 A 1 2 3 4 5 6 B 7 8 9 10 11 12 tryC A BcatchC A Bdisp error endlasterr 显示出错原因 4 2 5for循环语句 语句格式为 for循环变量 初值 增量 终值循环体语句end 例fori 1 1 10 x i i 2endplot x i 1forx 10 1 10 y i 3 x x x 6 x 5 i i 1 endplot y 例已知y的表达式 当n 100时 求y的值 y 0 n 100 fori 1 ny y 1 i 2 endy 例求定积分 a 0 b 3 pi n 1000 h b a n x a h b f exp 0 5 x sin x pi 6 fori 1 ns i f i f i 1 h 2 ends sum s 事实上 MATLAB提供了有关数值积分的标准函数 实际应用中可直接调用这些函数求数值积分 例fori 1 5forj 1 5a i j 1 i j 1 endenda 例p192例10 14sum 0 fori 1 10pdr 1 fork 1 ipdr pdr k endfprintf part d d n i pdr sum sum pdr endsumfprintf Thetotalsumis d n sum 例 利用for循环求1 2 3 5 的值 sum 153 课堂练习 sum 0 fori 1 5pdr 1 fork 1 ipdr pdr k endsum sum pdr endsum for更一般的表达式for循环变量 矩阵表达式循环体语句end执行过程是依次将矩阵的各列元素赋给循环变量 然后执行循环体语句 直至各列元素处理完毕 实际上 初值 增量 终值 是一个仅为一行的矩阵 行向量 因而列向量是单个数据 例已知5个学生4门功课的成绩 求每名学生的总成绩 s 0 a 65 76 56 78 98 83 74 85 76 67 78 79 98 58 42 73 67 89 76 87 fork as s k enddisp s 6576567898837485766778799858427367897687 4 2 6while语句while语句的一般格式为 while 条件 循环体语句end其执行过程为 若条件成立 则执行循环体语句 执行后再判断条件是否成立 如果不成立则跳出循环 例 用while循环求1 100间整数的和sum 0 i 1 whilei 100sum sum i i i 1 endsumsum 5050 练习P236第4题 1 3 x x 5 x 0 y x 3 x x 5 x 0 答案 t 10 i 1 whilet 0y i 3 t 2 5 elsey i 3 t 2 5 endx i t t t 0 5 i i 1 endplot x y 例根据矩阵指数的幂级数展开式求矩阵指数 X input X E zeros size X 生成零矩阵F eye size X 生成单位对角矩阵n 1 whilenorm F 1 0 求范数E E F F F X n n n 1 endEexpm X 调用MATLAB矩阵指数函数求矩阵指数 循环的嵌套如果一个循环结构的循环体又包括一个循环结构 就称为循环的嵌套 或称为多重循环结构 可以按照嵌套层数 分别叫做二重循环 三重循环等 处于内部的循环叫作内循环 处于外部的循环叫作外循环 在设计多重循环时 要特别注意内 外循环之间的关系 以及各语句放置的位置 不要搞错 课堂练习利用函数的递归调用 求n 递归调用函数文件factor m functionf factor n ifn 1f 1 elsef factor n 1 n end在命令文件main2 m中调用函数文件factor m求s 1 2 3 4 5 例列出从2到m的全部素数 m input m p 2 m fori 2 sqrt m 依次列出最大除数n find rem p i 0 去掉该数endp 显示结果 与循环结构相关的还有一个break语句 当在循环体内执行到该语句时 程序将跳出循环 该语句一般与if语句配合使用 在多重循环中 break只能使程序跳出包含它的最内层的那个循环Continue语句与break语句不同 使用continue后 系统不执行相关执行语句 但不会跳出当前循环 4 2 7人机交互命令 例break语句实现 y 0 i 1 while1f 1 i i y y f i i 1 ifi 100break endfprintf d i end 例continue语句实现 y 0 i 1 while1f 1 i i y y f i i 1 ifi 100continue endfprintf d i end 其调用格式为 pause 延迟秒数 如果省略延迟时间 直接使用pause 则将暂停程序 直到用户按任一键后程序继续执行 pause命令在程序调试以及需要看中间结果时特别有用 若要强行中止程序的运行可使用Ctrl C命令 pause函数 例pause函数实现 x 0 0 05 6 pi y sin x z cos x r y z plot x y pauseplot x z pause 10 plot x r 函数所传递参数的可调性在调用函数时 MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数 只要在函数文件中包含这两个变量 就可以准确地知道该函数文件被调用时的输入输出参数个数 从而决定函数如何进行处理 例nargin用法示例 函数文件examp m functionfout examp a b c ifnargin 1fout a elseifnargin 2fout a b elseifnargin 3fout a b c 2 end 命令文件mydemo m x 1 3 y 1 2 3 out1 examp x out2 examp x y out3 examp x y 3 例接收任意数量的两元素向量 并绘制直线 functiontestvar varargin fork 1 length varargin x k varargin k 1 y k varargin k 2 endxmin min 0 min x ymin min 0 min y axis xminfix max x 3yminfix max y 3 定义坐标轴范围的函数 plot
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 哲学论战:逻辑与观点
- 2025福建厦门市集美区后溪中学非在编教师招聘1人备考考试题库附答案解析
- 美容互联网营销方案策划
- 掌控学习之道
- 幼儿艺术启蒙
- 弱关系网络传播-洞察及研究
- 三篇管理制度
- 虚假信息溯源技术-洞察及研究
- 手指兄弟课件洗手图
- 多组学数据整合分析平台-洞察及研究
- 企业生产管理与质量控制模板
- 语言哲学概况课件
- 2025年度培训课程保密协议书范本
- 2025年国企审计笔试题及答案
- 人教版数学三年级上册第五单元《 第02课时 求一个数是另一个数的几倍 》(听评课记录)
- 抢救药品的使用规范及观察要点
- 大一农业基础化学课件
- 2025年中考数学真题知识点分类汇编之二次函数(四)
- 2025年中国地震局事业单位公开招聘考试历年参考题库含答案详解(5卷)
- 劳动保障监察条例课件
- 2025年注册会计师题库带答案分析
评论
0/150
提交评论