matlab编程基础2.ppt_第1页
matlab编程基础2.ppt_第2页
matlab编程基础2.ppt_第3页
matlab编程基础2.ppt_第4页
matlab编程基础2.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB编程初步 2020年1月27日 2 Matlab编程入门 Matlab编程简介 Matlab作为一种广泛应用于科学计算的工具软件 不仅具有强大的数值计算 符号计算 矩阵运算能力和丰富的绘图功能 同时也具有和C FORTRAN等高级语言一样进行程序设计 在Matlab程序设计中 要充分利用Matlab数据结构的特点 提高编程效率 利用Matlab的程序控制功能 可以将有关Matlab命令编成程序存储在一个文件中 M文件 然后在命令窗口中运行该文件 Matlab就会自动依次执行文件中的命令 直到全部命令执行完毕 2020年1月27日 3 用Matlab语言编写的程序称为M文件 M文件是由若干Matlab命令组合在一起构成的 它可以完成某些操作 也可以实现某种算法 事实上 Matlab提供的内部函数以及各种工具箱 都是利用Matlab语言开发的M文件 用户也可以结合自己的工作需要 开发自己的程序或工具箱 M文件 M文件以 m为扩展名 2020年1月27日 4 M文件是一个文本文件 可以用任何文本编辑器来建立和编辑 通常使用Matlab自带的M文件编辑器 M文件的建立与打开 2020年1月27日 5 在命令窗口中输入f2cs 即可执行该M文件 例 编写一个脚本文件将华氏温度转化为摄氏温度 脚本文件举例 脚本文件运行后 文件中所产生的所有变量都驻留在Matlab当前工作空间 可以用whos查看 2020年1月27日 6 关系运算 比较大小 如果结论是真则返回1 否则返回0 注意 与 的区别 关系操作符能用来比较两个同样大小的数组 或用来比较一个数组和一个标量 在后一种情况 标量和数组中的每一个元素相比较 比较结果与数组大小一样 关系运算符 2020年1月27日 7 例 关系运算举例 2 2 4ans 1 2 3ans 0 A 135 206 A 135B 310ans 011 B 310 246 206246101 A B x 50 42 x 50ans 01 x 44201 2020年1月27日 8 逻辑运算 逻辑运算符 A B等价于and A B A B等价于or A B A等价于not A 2020年1月27日 9 逻辑运算表 2020年1月27日 10 all x 如果向量X中所有元素都非零 则返回1 否则返回0 若x为矩阵 则any和all按列运算 返回一个0 1向量 逻辑运算 相关函数 any x 如果向量X中存在非零元素 则返回1 否则返回0A 02 34 56 any A any按列运算A 02ans 1134 all A 56ans 01all也按列运算 2020年1月27日 11 程序控制结构有三种 顺序结构 选择结构和循环结构 任何复杂的程序都由这三种基本结构组成 顺序结构 M文件控制流 2020年1月27日 12 数据的输入 input 数据输入input 2020年1月27日 13 disp X 输出变量X的值 可以是数值矩阵或字符串 B 123 456 789 disp B 数据输出disp 数据的输出 disp 2020年1月27日 14 数据输出fprintf format中还可以使用一些特殊格式 如 n 换行 t 制表符 b 退格 反斜杆 百分号 2020年1月27日 15 数据输出fprintf a Hello b 2 4 c 100 pi fprintf a s b f c e n a b c a Hello b 2 400000 c 3 141593e 002 例 format中的输出格式要与输出变量一一对应 可以没有输出变量 2020年1月27日 16 pause 程序的暂停 pause pause或pause n 若想强行终止程序的运行 可以使用Ctrl c 其中n是延迟时间 以秒为单位 若缺省 则将暂停程序 直到用户按任意键后继续 pauseoff屏蔽程序中所有pause的作用pauseon打开pause的作用 2020年1月27日 17 选择结构是根据给定的条件成立或不成立 分别执行不同的语句 Matlab用于实现选择结构的语句有if语句和switch语句 选择结构 2020年1月27日 18 单分支结构 ifexpression 条件 statements 语句组 end if条件语句 2020年1月27日 19 ifexpression1 条件1 statements1 语句组1 elseifexpression2 条件2 statements2 语句组2 elseifexpressionm 条件m statementsm 语句组m elsestatements 语句组 end 多分支结构 if条件语句 2020年1月27日 20 if语句举例 数论中的一个有趣问题 任取一个正整数 如果是偶数 用2除 如果是奇数 用3乘再加1 反复这个过程 直到所得到的数为1 问 是否存在使该过程永不中止的整数 exp01 m 2020年1月27日 21 while1n input Pleaseentern nonpositivequit m n ifn1ifrem n 2 0n n 2 elsen 3 n 1 endfprintf nn d n endfprintf n disnotweneed continue n m end if语句举例 2020年1月27日 22 根据表达式的不同取值 分别执行不同的语句 switchexpression 表达式 casevalue1 表达式1 statement1 语句组1 casevalue2 表达式2 statement2 语句组2 casevaluem 表达式m statementm 语句组m otherwisestatement 语句组 end switch语句 2020年1月27日 23 Matlab首先计算expression的值 然后将它依次与各个case指令后的检测值进行比较 当比较结果为真时 就执行相应的语句组 然后跳出switch结构 switch后面的表达式expression的值可以是一个标量或字符串 switch语句 otherwise指令可以不出现 如果所有的比较结果都为假 则执行otherwise后面的语句组 然后跳出switch结构 2020年1月27日 24 循环结构是按照给定的条件 重复执行指定的语句 Matlab用于实现循环结构的语句有for语句和while语句 循环结构 2020年1月27日 25 forvariable expressionstatement 循环体 end 循环变量 表达式expression可以是行向量 也可以是矩阵 for循环 clear y 0 n 100 fork 1 ny y 1 2 k 1 end 2020年1月27日 26 循环语句可以嵌套使用 while循环 whileexpression 条件 statement 循环体 end 不能在for循环体内改变循环变量的值 为了提高代码的运行效率 应尽可能提高代码的向量化程度 避免for循环的使用 如果预先就知道循环的次数 则可以采用for循环 否则 如果预先无法确定循环的次数 则可以使用while循环 2020年1月27日 27 这个例子给出了计算eps的一种方法 这里我们用大写EPS 因此系统中eps的值不会被覆盖 当EPS eps时 条件仍成立 而当EPS eps 2时 条件为假 退出循环 所以最后应有EPS eps 2 num用来记录循环次数 计算Matlab中eps值 exp02 m while循环举例 num 0 EPS 1 while 1 EPS 1EPS EPS 2 num num 1 endeps为浮点运算的相对精度 2020年1月27日 28 break和continue break语句用于终止循环的执行 即跳出最内层循环continue语句用于结束本次循环 进行下一次循环break和continue一般与if语句配合使用 其它流控制语句 2020年1月27日 29 首先由计算机随机产生一个 1 100 之间的一个整数 然后由用户猜测所产生的这个数 根据用户猜测的情况给出不同的提示 如果猜测的数大于产生的数 则显示 High 小于则显示 Low 等于则显示 Youwin 同时退出游戏 用户最多有7次机会 exp03 m 程序示例 猜数游戏 2020年1月27日 30 猜数游戏clear x round 100 rand 由计算机随机产生一个 0 100 的整数n 7 有7次机会test 1 disp 欢迎参加猜数游戏 你共有 num2str n 次机会 disp 请输入一个0到100之间的一个整数 fork 1 nguess input Enteryourguess ifguessxdisp high elsedisp Youwin test 0 break endn n 1 disp 你还有 num2str n 次机会 endiftest 1disp Youlost end 程序示例 2020年1月27日 31 function输出形参列表 函数名 输入形参列表 注释说明部分 可选 函数体语句 必须 第一行为引导行 表示该M文件是函数文件函数名的命名规则与变量名相同 必须以字母开头 当输出形参多于一个时 用方括号括起来函数必须是一个单独的M文件函数文件名必须与函数名一致以百分号开始的语句为注释语句 函数文件 函数文件由function语句引导 2020年1月27日 32 functiony myfliplr x returnsXwithrowpreservedandcolumns flippedintheleft rightdirection X 123becomes321 456654 num col size x 2 取x的列数y x num col 1 1 先输入矩阵x 而后写上myfliplr x 函数文件举例 myfliplr m 2020年1月27日 33 functionprintyh n 打印杨辉三角形 本函数没有输出参数yh 1 disp yh ifn 1 return endyh 1 1 disp yh fork 3 nyh old yh k2 ceil k 2 forl 2 k2yh l yh old l 1 yh old l endyh k2 1 k yh k k2 1 1 disp yh end 在matlab中可输入printyh 5 函数文件举例 printyh m 2020年1月27日 34 函数调用的一般格式 输出实参列表 函数名 输入实参列表 函数调用时 实参的顺序应与函数定义时的形参的顺序一致 函数可以嵌套调用 即一个函数可以被其它函数调用 甚至可以被它自身调用 此时称为递归调用 函数所传递的参数具有可调性 Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数 函数调用 2020年1月27日 35 函数文件factor mfunctionf factor n if n 1 f 1 elsef n factor n 1 end main m 计算s 1 2 3 4 5 clear s 0 fori 1 5s s factor i endfprintf s g n s 例 利用函数的递归调用计算n 递归函数举例 2020年1月27日 36 ex4argin mfunctionout ex4argin a b if nargin 1 out a elseif nargin 2 out a b end 参数的可调性举例 ex4argout mfunction p q e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论