MATLAB使用教程初步入门大全ppt课件.ppt_第1页
MATLAB使用教程初步入门大全ppt课件.ppt_第2页
MATLAB使用教程初步入门大全ppt课件.ppt_第3页
MATLAB使用教程初步入门大全ppt课件.ppt_第4页
MATLAB使用教程初步入门大全ppt课件.ppt_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

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

文档简介

数值计算的工具 MATLAB 电子计算机技术为应用数学解决实际问题创造了物质条件 今天 在技术科学中最有用的数学研究领域是数值分析和数学建模 一切科学与工程技术人员的教育必须包括越来越多的数学和计算科学的内容 数学建模和相伴的计算正成为工程设计中的关键工具 科学家正日益依赖于计算方法以及在解释结果的精度和可靠性方面有充分的经验 吴文俊 任何数学都要讲究逻辑推理 但这只是问题的一个方面 更重要的是用数学去解决问题 解决日常生活中 其他科学中出现的数学问题 学校给出的数学题目都是有答案的 已知什么 求证什么 都是很清楚的 题目也是一定做得出的 但是来到了社会上 所面对的问题大多是预先不知道答案的 甚至不知道是否会有答案 这就要求学生培养创造能力 学会处理各种实际数学问题的方法 数学软件既是数值计算的工具 也是数值实验的工具 MATLAB 矩阵实验室 MATLAB基本操作MATLAB数值计算MATLAB符号计算MATLAB图形处理MATLAB程序设计MATLAB实际应用 1MATLAB基本操作 一 MATLAB的开发环境1 MATLAB系统的组成 MATLAB开发环境 MATLAB数学函数库 MATLAB语言 图形功能 应用程序接口五个部分 2 MATLAB6 x的开发环境 MATLAB6 x的开发环境包括命令窗口 启动平台窗口 工作空间窗口 命令历史窗口 当前路径窗口 M文件编辑器 在线帮助浏览器等 启动MATLAB后 将显示包括命令窗口 启动平台窗口 工作空间窗口 命令历史窗口和当前路径窗口等五个窗口和主菜单组成的操作桌面 主窗口 操作桌面在缺省状态下显示3个窗口 启动平台和工作空间窗口在同一个位置显示 命令历史窗口和当前目录窗口在同一位置显示 MATLAB设定了几种特定的窗口布局方式 可以在视图 View 菜单中选择窗口布局 DesktopLayout 设定 其中缺省方式为Default 1 命令窗口 CommandWindow MATLAB是交互式的语言 输入命令即给出运算结果 而命令窗口则是MATLAB的主要交互窗口 用于输入和编辑命令行等信息 显示结果 图形除外 当命令窗口中出现提示符 时 表示MATLAB已经准备好 可以输入命令 变量或运行函数 提示符总是位于行首 在每个指令行输入后要按回车键 才能使指令被MATLAB执行 2 启动平台 LaunchPad 启动平台用于启动和管理系统中安装的MATLAB系统 可以通过双击来启动相应的选项 启动平台是一个展示MATLAB功能和产品工具箱的平台 可以通过Demos了解MATLAB 3 工作空间 Workspace 工作空间用于保存MATLAB变量的信息 在工作空间可以对变量进行观察 编辑 保存和删除 保存在工作空间中的自定义变量 直到使用了 clear 命令清除工作空间或关闭了MATLAB系统才被清除 在命令窗口中键入 whos 命令 可以显示出保存在工作空间中的所有变量的名称 大小 数据类型等信息 如果键入 who 命令 则只显示变量的名称 4 命令历史窗口 CommandHistory 命令历史窗口记录用户每一次启动MATLAB的时间以及在命令窗口运行过的所有指令 命令历史窗口中的指令可以被复制到命令窗口重新运行 如果要清除掉这些记录 可以选择 Edit 菜单中的 ClearCommandHistory 项 5 当前路径窗口 CurrentDirectory 当前路径窗口也称为当前目录窗口 可以显示或改变当前目录 当前目录指的是MATLAB运行文件时的工作目录 只有在当前目录或搜索路径下的文件及函数可以被运用或调用 如果没有特殊指明 数据文件也将储存在当前目录下 如果要建立自己的工作目录 在运行文件前必须将该文件所在目录设置为当前目录 二 MATLAB的启动与退出 1 MATLAB系统的启动 1 在桌面上双击MATLAB快捷方式图标 2 在开始菜单中单击MATLAB MATLAB6 5项 3 在MATLAB安装目录 MATLAB6p5中双击MATLAB快捷方式 4 在MATLAB安装目录 MATLAB6p5 bin win32中双击MATLAB exe图标 2 MATLAB系统的退出 1 点击操作桌面的关闭按钮 2 执行操作桌面file ExitMATLAB命令 3 在命令窗口中输入命令exit或quit 并回车 4 用快捷键Ctrl Q 三 MATLAB的帮助系统 1 帮助命令帮助命令是查询函数语法的最基本的方法 查询信息直接显示在命令窗口 帮助命令有help lookfor help 在命令窗口直接输入help 显示主要的在线帮助主题 help函数名 显示关于某个具体函数的功能 调用格式 及相关函数 help帮助主题 列出指定主题下的函数 例如 helpelfun 列出所有基本函数 MATLAB的帮助系统 续 lookforimage 查找有关图像的函数和命令 2 在线帮助浏览器MATLAB6 x设计了全新的在线帮助浏览器 当在View菜单中选择了Help选项 或在Help菜单中选择了MATLABHelp选项时 都可以打开帮助浏览器 3 演示帮助选择Help菜单中的Demos选项 可以打开演示窗口 观看要查询项的动画演示 四 MATLAB的运行方式 1 命令行运行方式演算纸式的科学计算语言在MATLAB的应用中 最基本 最简单的应用 就是在命令窗口中直接输入命令来实现计算或绘图功能 MATLAB命令行的一般形式为 变量 表达式或 表达式 赋值语句 命令行运行方式 续 使用MATLAB最简单的方式是将MATLAB的命令窗口看作计算器 通过输入数学算式直接计算 1 2 3 4 5 ans 15 如果在输入的表达式后面跟上分号 那么运行后就不会马上显示运算的结果 必须键入输出变量后才能显示运算结果 用分号关闭不必要的输出会使程序运行速度成倍甚至成百倍地提高 1 2 3 4 5 则不会马上显示运算结果 要得到运算结果 必须 ans 则显示结果为ans 15 命令行运行方式 续 如果在表达式后面跟上逗号 或什么都不跟 运行后会马上显示该表达式的运算结果 如果一个表达式很长 可以用续行号 将其延续到下一行 1 2 3 4 5 注意加号写在本行 6 7 8 9 10 则输出结果ans 55如果续行号前面是数字 直接使用续行号会出现错误 有三种解决办法 一是设法使续行号前面是一个运算符号 二是先空一格再加续行号 三是再加一个点 在一行中也可以写几个语句 它们之间用逗号 或分号 隔开 A 1 2 3 3 sin 4 X 1966 310 1 则输出结果A 1 00002 00003 3000 0 7568X 7 3419 命令行运行方式 续 2 m文件运行方式 所谓m文件 就是用MATLAB语言编写的 可以在MATLAB中运行的程序 它是以普通文本格式存放的 故可以用任何文本编辑软件进行编辑 MATLAB提供的m文件编辑器就是程序编辑器 在File菜单中选择NEW 再选择M file 或点击新建图标 就可以调出m文件编辑器 用户可以用此编辑器编写m文件 m文件有两种形式 一种称为命令文件 ScriptFile 另一种称为函数文件 FunctionFile 两种文件的扩展名都是m 1 命令文件 如果要输入较多的命令 或者要经常对某些命令进行重复的输入 则可以将这些命令按执行顺序存放在一个m文件中 以后只要在MATLAB的命令窗口中输入该文件的文件名 系统就会调入该文件并执行其中的全部命令 这种形式就是MATLAB的命令文件 命令文件中的语句可以访问MATLAB工作空间的所有变量 而在命令文件执行过程中创建的变量也会一直保留在工作空间中 其他命令或m文件都可以访问这些变量 命令文件相当于DOS批处理文件 命令文件 续 求满足1 2 3 n 100 故应对sum减nn n 1 当循环结束时有sum 100 故应对n减1n sum 显示最大正整数n以及和sum 命令文件 续 将上述程序存入文件fl m 然后在命令窗口键入 fl 显示结果为n 13sum 91指出 程序中由符号 开始的文字都是注释文字 用来对程序或程序行行进行注释说明 符号 称为注释符 MATLAB在执行时将忽略 后的内容 2 函数文件 函数文件是另一类m文件 可以像库函数一样方便地被调用 MATLAB提供的许多工具箱 是由函数文件组成的 对于某一类特殊问题 用户可以建立系统的函数文件 形成专用工具箱 函数文件的第一行有特殊的要求 它必须遵循如下的形式 function 其他各行都是程序运行语句 没有特别要求 函数文件的文件名必须是 m 函数文件 续 实现符号函数运算功能的函数m文件为 functiony sgn x 这是一个定义符号函数y sgn x 的函数文件 ifx 0y1 1 elseifx 0y1 0 elsey1 1 endy y1 函数文件 续 将上述程序存为文件sgn m 便可以将其作为普通的MATLAB函数来使用 x 4 3 pi y 3 sgn sin x 显示结果为 y 3 五 MATLAB的常用命令 MATLAB可以通过菜单对工作着的窗口进行操作 也可以通过键盘在命令窗口输入命令进行操作 下面给出几个常用的通用命令 quit关闭MATLABexit关闭MATLABclc清除MATLAB命令窗口中的所有显示内容clear清除工作空间中保存的所有变量其他命令可以在学习应用中逐步熟悉 六 MATLAB的基本运算 指出 右除相当于通常的除法 七 MATLAB的变量与函数 1 变量变量就是在程序的运行过程中 其数值可以变化的量 数据 它可以代表一个或若干个内存单元 变量的地址 中的数据 为了对所有的变量所对应的存储单元进行访问 需要给变量命名 MATLAB变量命名的规则是 以字母开头 后面可以跟字母 数字或下划线 不超过31个字符 字符间不可以留空格 区分大小写 MATLAB的变量与函数 续 系统变量 MATLAB的变量与函数 续 指出 自定义变量名一般不应和系统变量同名 在MATLAB中输入的内容直接决定变量的类型 使用who和whos命令可以查看变量 使用clear命令可以删除所有定义过的变量 如果只是删除其中某些变量 应在clear后面指定要删除的变量名 例如clearaz 有了变量 就可以组成表达式 也就可以对变量进行赋值 MATLAB的赋值语句有两种形式 变量名 表达式 表达式在第一种情况下 MATLAB将右边的表达式的值赋值给左边的变量 在第二种情况 MATLAB将表达式的值赋值给系统变量ans 所谓表达式 就是用运算符号把特殊字符 函数名 变量名等有关运算量连接起来的式子 其结果是一个矩阵 2 函数 数学函数 函数 续 机器函数pause程序将暂时停在该函数所在位置 击任意键程序继续执行echoon在命令窗口显示正在执行的程序指令cputime给出MATLAB所耗用的总机器时间clock给出日期及当前时间指出在表达式中 函数一定要出现在等式的右边 每个函数对其自变量的个数和格式都有一定要求 如三角函数的单位是 弧度 而不是 度 函数允许嵌套 如sqrt sin 10 系统函数的函数名小写 注意函数名也是区分大小写的 2MATLAB的数值计算 MATLAB运算的基本数据对象是矩阵 标量可以看作是1 1的矩阵 向量可以看作是1 n或n 1的矩阵 因此 可以说MATLAB的数据结构就是矩阵 以矩阵运算为代表的基本运算功能一直是MATLAB引以为自豪的核心与基础 一 矩阵的创建 矩阵是线性代数的基本运算单元 通常矩阵是指含有m行n列数值的矩形结构 矩阵中的元素可以是实数也可以是复数 由此可以将矩阵划分为实矩阵和复矩阵 MATLAB支持线性代数所定义的全部矩阵运算 在MATLAB中创建矩阵应遵循以下原则 矩阵的元素必须在方括号 中 矩阵的同行元素之间用空格或逗号 分隔 矩阵的行与行之间用分号 或回车符分隔 矩阵的尺寸不必预先定义 矩阵元素可以是数值 变量 表达式或函数 如果矩阵元素是表达式 系统将自动计算出结果 矩阵的创建 续 1 直接输入法 在命令窗口按规则输入方式创建矩阵例1 在命令窗口创建简单的数值矩阵 A 132 310 215 回车后在命令窗口显示如下结果A 132310215例2 在命令窗口创建带运算表达式的矩阵 不显示结果 y sin pi 3 cos pi 6 log 20 exp 2 输入 y 回车 在命令窗口显示出来 y 显示出的结果为y 0 86600 86602 99577 3891 矩阵的创建 续 指出 在矩阵较大时 用分行输入的方式 用回车代替分号区分不同行 比较接近于线性代数中的矩阵 更直观一些 任何矩阵元素内部不能有空格 否则会被认定是两个元素 矩阵的创建 续 2 通过数据文件创建矩阵 导入其他程序创建的数据例3 用记事本输入一组数据1234234543455761保存为fort txt 用load命令读入 loadfort txt 输入fort就可以在命令窗口显示创建的矩阵 fort 显示结果为fort 1234234543455761 矩阵的创建 续 指出 通过load命令导入数据是形成矩阵的重要方法 解决了在工作现场没有MATLAB系统和其他数据管理系统的问题 可以只用基本的文字处理工具完成 MATLAB对文本形式的数据文件的扩展名并不计较 将上述数据文件换名保存为fort 1 仍然可以如上导入 应用 文件名可以定义为m1 txt或m1 1 但是 如果将文件命名为1m txt 则显示出错信息 Error Missingoperator 算子 comma 逗号 orsemicolon 分号 如果文件名命名为3 txt 1 txt 3 1等 则显示的是主文件名所用的数字 数据文件保存为word或wps等的文件格式同样可以引用 矩阵的创建 续 如果数据文件中有字母 则不能引用 显示出错信息 即使该字母在前面的指令中已经赋值也不可 如果数据文件中有算式 则不能完整显示 算式元素将仅显示第一个运算符 或关系符 前的数字 导入其他数据 如图像数据 Excel数据时 可以使用数据导入向导ImportWizard 矩阵的创建 续 3 通过m文件创建矩阵 将矩阵建立为m文件先将矩阵按创建原则写入一个m文件中 在MATLAB命令窗口或程序中直接运行该m文件 输入该m文件名 即可将矩阵调入工作空间 4 通过函数创建矩阵 矩阵的创建 续 指出 当某一项操作无结果时 MATLAB将返回一个空矩阵 空矩阵的大小为0 但它确实存在于工作空间 可以通过变量名访问 输入后的矩阵将保存在MATLAB工作空间中 并可以随时被访问调用 如果用户不用 clear 命令清除它 或给它重新赋值 该矩阵将一直保存在工作空间直到MATLAB关闭为止 如果矩阵函数中只有一个参数 则为方阵 四种创建矩阵的方法各有优点 直接输入法方便简捷 通过数据文件创建有利于调用其他软件产生的数据 通过m文件创建是用于创建较大尺寸的矩阵并便于修改 通过函数创建可以由MATLAB内部函数创建一些特殊矩阵 矩阵的创建 续 5 其他构造矩阵的方法 冒号法 1 冒号法构造向量冒号表达式的一般格式为 向量名 初值 步长 终值 例4 在窗口输入 x 0 0 5 2回车后显示x 00 50001 00001 50002 0000 例5 在命令窗口输入 x 2 0 5 0回车后显示x 2 00001 50001 00000 50000 矩阵的创建 续 指出 步长可以省略 省略步长 则步长为1 步长可以为负 此时初值大于终值 向量的元素比较多而又有增减规律时 这种方法非常便利 冒号法表示向量时 向量的全体成员是从初值开始 以步长为增量 直到不超过终值的所有元素构成的序列 冒号法的应用可以避免使用循环 提高程序运行速度 矩阵的创建 续 2 冒号法构造矩阵一般格式为 A j 表示矩阵A的第j列 A i 表示矩阵A的第i行 例6 建立矩阵 解 A 1 1 5 设置矩阵的第1行A 12345 矩阵的创建 续 A 2 6 10 设置矩阵的第2行A 12345678910 A 3 11 15 设置矩阵的第3行 设置完成A 123456789101112131415 矩阵的创建 续 指出 在MATLAB中 还可以利用函数linspace产生行向量 其调用格式为 linspace a b n 其中a b是向量的第一个和最后一个元素 n是元素的个数 这样产生的向量的元素成等差数列 例如 linspace 1 4 5 ans 1 00001 75002 50003 25004 0000函数linspace被称为线性等分函数 矩阵的创建 续 指出 冒号法和应用linspace都可以创建具有递增元素序列的向量 但是 用冒号法创建向量时 向量的元素不一定取到终值 而应用linspace则必然会取到 因为b表示的就是最后一个元素 二 矩阵的运算 MATLAB对于矩阵与矩阵之间的运算的处理方法与线性代数中的相同 矩阵的计算 续 说明 矩阵也可以和一个数之间进行运算 线性代数没有定义除法运算 MATLAB为了便于计算 定义了矩阵的除法 并有左除和右除之分 矩阵左除使用 运算符 右除使用 运算符 X A B是解方程组A X B X B A则是解方程组X A B 一般地说 A B B A 在算法上 A B inv A B inv是求某一个矩阵的逆矩阵 而B A B inv A 指出 如果A B B A I 单位矩阵 称A和B互为逆矩阵 如果矩阵中有复数元素 那么转置后得到它的复数共轭矩阵 矩阵的运算 续 例7 若创建矩阵A 1 0 2 0 1 3 1 0 4 B 1 2 3 4 5 6 7 8 9 C 1 2 3 4 5 6 并计算A B A 3 A C A2 CT A 1 A 1B 指出 A2 A 2 CT C A 1 inv A A 1B A B 或inv A B 在MATLAB系统中 还有一个数据结构是 数组 数组在结构上和矩阵是完全一致的 唯一的区别是数组的运算不服从线性代数的规定 而是元素对元素间的运算 数组的加减运算与矩阵加减相同 数组的乘法 左除 右除 幂的运算符号分别是矩阵相应运算符前面加一个小圆点 矩阵运算的一个重要的应用是解线性方程组 矩阵的运算 续 例8 求下面方程组的根 解 解线性方程组 可以使用矩阵的左除 即X A B A 2 1 3 3 2 2 5 3 1 B 5 5 16 列向量 X A BX 1 3 2 矩阵的运算 续 指出 线性方程组A X B有两种解法 X A B或X inv A B 但一般用第一种解法 在MATLAB中 第二种解法所用时间是第一种解法的50倍 可以看出 同样解线性方程组 不同的算法的效率是有极大差距的 可见优化和选择算法是非常重要的 求逆运算inv A 是重要的代数运算 三 矩阵的操作 1 矩阵的大小测度Size函数用来测试矩阵的大小 对于矩阵A size A 返回一个行向量 它包含了矩阵的行数m和列数n 如果专门显示行数和列数 则可以采用如下格式 例9 已知矩阵 求矩阵的大小 矩阵的操作 续 解 A 11111 12345 1361015 设A为已知矩阵A 11111123451361015 d size A 测试矩阵A的大小d 35 d1 size A 1 测试矩阵的行数d1 3 d2 size A 2 测试矩阵的列数d2 5 矩阵的操作 续 2 矩阵的元素操作例10 已知矩阵 写出矩阵的元素A 2 3 将A 3 5 改为 1 解 A 11111 12345 1361015 A 11111123451361015 矩阵的操作 续 A 2 3 ans 3 A 3 5 1A 111111234513610 1 矩阵的操作 续 例11 A 132 310 215 A 132310215 B 436 514 346 B 436514346 U 1 1 A 1 1 B 1 1 U 1 2 A 1 2 B 1 2 U 2 1 A 2 1 B 2 1 U 2 2 A 2 2 B 2 2 UU 56 20 矩阵的操作 续 3 矩阵块的操作利用冒号表达式对矩阵进行拆分 提取子矩阵是矩阵操作的重要方面 提取的规则是 A j 表示取矩阵A的第j列的全部元素 A i 表示取矩阵A的第i行的全部元素 A i j 表示取矩阵A的第i行第j列交叉位置的元素 A i i m 表示取矩阵A的第i i m行的全部元素 A k k n 表示取矩阵A的第k k n列的全部元素 A i i m k k n 表示取矩阵A的第i i m行内并在第k k n列中的全部元素 矩阵的操作 续 例12 拆分矩阵的例子 A 11111 12345 1361015 A 11111123451361015 A 2 3 ans 3 A 3 5 1A 111111234513610 1 矩阵的操作 续 A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 A 1234567891011121314151617181920 A 1 ans 12345 矩阵的操作 续 A 2 4 ans 234789121314171819 A 2 3 4 5 ans 9101415 A 2 3 1 2 5 ans 6810111315 矩阵的操作 续 例13 组合矩阵的例子 A 1 2 3 4 A 1234 B 2 3 4 5 B 2345 A B ans 12233445 矩阵的操作 续 A B ans 12342345 A 6 7 ans 123467 矩阵的操作 续 冒号表达式是MATLAB中非常重要的 应用非常广泛 也非常灵活的工具 利用冒号表达式比利用循环语句赋值解决同一问题要快得多 所以实际编程时一般应当尽量采用冒号表达式而不是用循环 矩阵的操作 续 例14 A 1234567891011121314151617181920 A 1234567891011121314151617181920 A end 取A的最后一行ans 1617181920 矩阵的操作 续 A 1 4 3 end 取A的第1 4两行中第3列到最后一列 ans 345181920 A 1 4 取A的第1 4两行 ans 123451617181920 指出 end用来表示矩阵某一维末尾元素 矩阵的操作 续 例15 c 3 2 4 5 2 4 4 7 d c ones size c zeros size c eye size c d 3 20004 50001 00001 00002 40004 70001 00001 0000001 000000001 0000 指出 实际上 例15是分块输入矩阵的例子 是将矩阵分4块输入的 注意分块的意义 四 数据的输出格式 format命令的格式为 format格式符格式符决定数据输出格式 常见格式及其含义有 short 输出小数点后4位 最多不超过7位有效数字 对于大于1000的实数 用5位有效数字的科学记数形式输出 long 15位有效数字形式输出 shorte 5位有效数字的科学记数形式输出 longe 15位有效数字的科学记数形式输出 rat 近似有理数形式输出 数据输出格式 续 指出 format命令只影响数据的输出格式 而不影响数据的存储和计算 如果输出的矩阵的每个元素都是整数 则MATLAB就用整数格式显示结果 只要矩阵中有一个元素不是整数 MATLAB就按当前的输出格式显示 默认的输出格式是short 数据输出格式 续 注意rat格式 如果在进行运算前执行formatrat命令 则可以用分数形式显示运算结果 这样便于核对手算的结果的正确性 例如 1 3ans 0 3333 formatrat 1 3ans 1 3 在改变了输出格式后 为了以后还按默认的格式输出 应当再执行formatshort命令 数据输出格式 续 即使在默认格式下 0也仅仅是输出0 教材中输出0 0000是不正确的 显示格式是非常重要的 要熟悉几种重要的格式 3MATLAB的符号运算 数值运算中的变量需要事先赋值 才能出现在表达式中参与运算 但人们经常需要对含有字符的矩阵和函数进行处理和运算 如求函数的微分 积分等等 这就需要进行符号运算 MATLAB的符号运算利用符号数学工具箱进行 符号工具箱的功能主要包括符号表达式的创建 符号矩阵的运算 符号表达式的化简和替换 符号微积分 符号代数方程 符号微分方程 符号函数绘图等等 一 符号对象的创建 1 字符串变量的创建字符串是一种特殊的符号对象 在数据处理 造表和函数求值中 字符串具有重要的应用 用单引号界定的字符序列称为字符串 例如 s hello 回车后 显示s hello 符号对象的创建 续 指出 字符串中的字符可以是数字 英文字母 汉字 横线 括号 表达式 方程等 字符串也称字符串数据或字符变量 用赋值符号 把字符串赋给某个标识符 例如s 这个标识符称为字符串变量名 简称字符名 2020 1 28 74 可编辑 2 符号变量和符号表达式的创建 MATLAB的符号数学工具箱提供了两个基本函数sym和syms 用来创建符号变量 符号表达式和符号矩阵 用函数sym建立符号变量 符号表达式和符号矩阵 调用格式为 变量 sym 表达式 y sym 2 cos x 将显示y 2 cos x 这是一个符号表达式 符号对象的创建 续 用函数syms建立符号变量 符号表达式和符号矩阵 调用格式为 Symsvar1var2var3 注意空格 symsyu p exp y u q y 2 u 3 u y这样就建立了两个符号表达式 分别存放在变量p和q里 指出 由于syms函数书写简洁 意义清楚 符合MATLAB的习惯特点 一般提倡使用syms创建符号变量 符号表达式和符号矩阵 符号对象的创建 续 注意用单引号创建的字符串变量和用函数sym syms创建的符号变量性质并不完全一样 在符号工具箱中 有些指令的参数既可以用字符串型数据也可以用符号型数据 但也有一些指令的参数必须用符号型数据 加法 求导等运算对数值形式的字符串和符号变量都按符号变量对待 不加区别 而级数求和命令symsum s n h k s是通项表达式 n为级数的项数 h k分别是求和的起止项数 中的s必须用符号表达式而不能用字符串 MATLAB中 在没有规定的情况下 默认最接近x的字母表示自变量 二 符号微积分 limit f x a 求表达式f当x a时的极限diff f 求表达式f对缺省变量的微分diff f n 求表达式f对缺省变量求n阶微分diff f v 求表达式f对变量v的微分diff f v n 求表达式f对变量v的n阶微分int f 求表达式f对缺省变量的积分int f v 求表达式f对变量v的积分int f v a b 求表达式f在区间 a b 上对变量v的定积分 符号微积分 续 例 已知f x ax2 bx c 求f x 的微分和积分 解 symsabcx f sym a x 2 b x c f a x 2 b x c diff f a ans x 2 int f ans 1 3 a x 3 1 2 b x 2 c x int f x 0 2 ans 8 3 a 2 b 2 c 4MATLAB的图形处理 MATLAB的图形处理 续 x y z sphere 30 surf x y z box 二维图形的绘制 一 二维图形的绘制1 数据绘图命令 plot plot y 当y为向量时 以y的分量为纵坐标 以元素序号为横坐标 用直线依次连接数据点 绘制曲线 若y为实数矩阵 按列绘制每一列所对应的曲线 图中曲线数等于矩阵的列数 plot x y 若y和x为同维向量 以x为横坐标 以y为纵坐标绘制连线图 若x是向量 y是行数或列数与x的长度相等的矩阵 则绘制多条不同色彩的连线图 x被作为这些曲线的共同坐标 若x和y是同型的矩阵 则以x和y的对应列元素为横纵坐标分别绘制曲线 曲线条数等于矩阵的列数 plot x y1 x y2 以公共的x元素为横坐标 以y1 y2 y3 元素为纵坐标值绘制多条曲线 二维图形的绘制 续 例1 以向量y 1 2 5 4 5 3 6 1 的各个分量为纵坐标 分量序号为横坐标绘制顺序连接线 解 输入命令 y 1254 5361 plot y 二维图形的绘制 续 二维图形 续 例2 画出一条正弦曲线和一条余弦曲线 x 0 pi 10 2 pi 构造向量 y1 sin x 构造对应的y1坐标 y2 cos x 构造对应的y2坐标 plot x y1 x y2 画出一个以x为横坐标 y1 y2为纵坐标的图形指出 构造向量采用了所谓的冒号法 格式为向量名 初值 步长 终值 步长为1时可以省略 plot是针对向量或矩阵的列来绘制曲线的 也就是说 使用plot之前必须首先定义好曲线上每一点的x坐标和y坐标 在上述的格式中 x和y都可以是表达式 如果自变量的间隔取得比较大 光滑的曲线就会显示出折线的本来面貌 二维图形 续 2 函数绘图命令 1 解析函数绘图命令fplot使用格式 fplot fun lims s tol 其中 用单引号界定的输入参数fun 是解析函数字符串表达式 内联函数或m 函数文件名 fun可以是一个函数 也可以是元素是函数的向量 输入参数lims规定了绘图区间 lims a b c d 表示 自变量x和函数y的取值范围分别是x a b y c d 通常c d被省略 输入参数s用于修饰曲线 后面介绍 输入参数tol规定函数取值的相对误差 常省略 默认2e 3 fun是函数向量时 绘出的几条曲线的取值区间和线型是相同的 解析函数绘图命令fplot 续 例3 绘制函数f x cos tan x 的曲线 解 fplot cos tan pi x 0 4 1 4 fplot 续 解析函数绘图命令fplot 续 指出 输入该命令的函数表达式是解析式 式中不用数组算法符号 与plot命令不同 fplot函数用于绘制已定义函数在指定的范围内的图像 虽然它与plot相似 也是用描点法画图 但该函数可以根据函数自身的性质自适应地对函数进行采样 能够自动确定曲线变化率大的区段并在此区段进行密集采样 也就是说 画图时x的取值间隔是随函数的曲率自动调节的 曲率大 曲率半径小 处间隔小 曲率小处间隔大 这种自适应地取值使绘制的曲线光滑 美观 可以减少取点的数目的同时更好地反映函数的变化规律 2 隐函数绘图命令 ezplot 使用格式 ezplot func lims 其中 输入参数 func 可以是字符表达式 内联函数或m 函数文件名 输入参数func为一元函数f x 时 输出y f x 的几何图形 这时命令后面可以不用括号和引号 但函数的第一个符号不得是括号 不能加写输入参数lims 默认绘图范围是 2 2 输入参数func是二元函数表达式f x y 时 输出方程f x y 0的几何图形 即绘制隐函数曲线 变量的范围由输入参数lims规定 lims a b c d 表示x和y的取值范围分别是x a b y c d 省略 c d 时默认x y取值区间相同 隐函数绘图命令 ezplot 续 输入参数func是参数方程时 func写成 x t y t 按参数方程绘出t a b 的函数曲线 输入参数lims规定自变量取值范围 默认范围是x 2 2 该命令一次只能绘制一条曲线 在绘出函数图形的同时自动在图的上侧加注函数解析式 下侧加注自变量名称 曲线的色型 线型无法控制 例4 绘制三叶玫瑰线r sin 3t 极坐标方程 解 把极坐标方程r sin 3t 通过转换成直角坐标方程 输入命令 ezplot sin 3 t cos t sin 3 t sin t 0 pi 隐函数绘图命令 ezplot 续 隐函数绘图命令 ezplot 续 二维图形绘制 续 MATLAB绘制的其它图像的例子 例5 某次考试学生成绩优秀的占8 良好的占20 中等的占36 及格的占24 不及格的占12 分别用饼图和条形图表示 解 x 820362412 subplot 221 pie x 10001 title 饼图 subplot 222 bar x grpup title 垂直条形图 subplot 223 bar x stack title 累加值为纵坐标的垂直条形图 subplot 224 barh x group title 水平条形图 fplot 续 3 绘图控制命令 1 曲线控制命令在使用plot等命令绘制曲线时可以指定曲线的颜色 线型和数据点图标 基本的调用格式为plot x y colorline stylemarker 颜色控制符表 绘图控制 续 线型控制符表 绘图控制 续 数据点标记控制符表 绘图控制 续 指出 颜色 线型 标记三种属性的符号必须放在同一个字符串内 属性的先后顺序没有关系 可以只指定一两个属性 也可以全部缺省 但同种属性不能同时指定两个 颜色缺省为蓝色 点 线标识符缺省为实线 属性间不用间隔 绘图控制 续 例6 用红色 点连线 叉号画出正弦曲线 x 0 0 2 8 y sin x plot x y r x 绘图控制 续 2 图形的标注命令 图形标注函数 图形的标注 续 例7 给例2的图形加入网格和标注 x 0 pi 10 2 pi y1 sin x y2 cos x plot x y1 x y2 gridon 添加网格 xlabel x轴 横坐标名 ylabel y轴 纵坐标名 title 正弦函数和余弦函数曲线 标题 text 1 5 0 3 cos x 指定位置标注 gtext sin x 用鼠标选择位置标注 axis 02 pi 1 21 2 设置坐标轴的最大最小值 图形的标注 续 图形的标注 续 指出 标注文字可以使用汉字 标注也可以适当设定字符属性增加文本变化 例如 title 弦函数曲线 FontName 隶书 FontSize 20 3 图形的比较显示命令 默认的情况下 MATLAB每一次使用plot函数进行绘图 都将清除原有的图形 但有时候我们希望后面绘制的图形能和前面所绘制的图形进行比较 此时我们有两种方法 一是采用holdon of 命令 在同一个图形窗口中绘制新的图形叠加在原有的图形上 二是采用subplot n m k 命令 将图形窗口分割成几个小窗口 在每个窗口中画出一个图形 holdon of 保持绘图命令 subplot n m k 将图形窗口分成n行m列个格子 在第k个格子绘图 格子按从上到下依行计数 图形的比较显示 续 例8 在同一个窗口中 使用两次plot函数绘制两条曲线 x 0 0 2 12 plot x sin x holdon plot x cos x 图形的比较显示 续 图形的比较显示 续 例9 把当前窗口分割成四个区域 绘制四条函数曲线 x 0 0 05 8 y1 2 sin x y2 2 cos x y3 sin 2 x y4 cos 2 x subplot 2 2 1 plot x y1 title 2sinx 图形的比较显示 续 subplot 2 2 2 plot x y2 title 2cosx subplot 2 2 3 plot x y3 title sin2x subplot 2 2 4 plot x y4 title cos2x 图形的比较显示 续 二 三维图形的绘制 1 和二维图形相对应 MATLAB提供了一个三维曲线绘制命令plot3 它的应用和plot类似 只是多了z方向的数据 例10 绘制一条三维曲线 clear clc z 0 pi 50 10 pi x sin z y cos z plot3 x y z 三维图形 续 三维图形 续 2 绘制三维曲面的命令则有mesh x y z 或surf x y z 它们的区别在于 前者绘制出的是一个用网格近似的曲面 后者绘制出的是一个真正表面图 例11 绘制多峰函数图 z peaks 40 mesh z surf z peaks称为多峰函数 常用于三维曲面的演示 三维图形 续 三维图形 续 三 例 例12 画出函数在区域上的图像 解 执行下面的程序 pt3d m x 18 0 5 18 y x u ones size y x v y ones size x r sqrt u 2 v 2 eps z sin r r mesh z xlabel x ylabel y zlebel z 例 例 pt3d2 m x 18 0 5 18 y x 产生x y两个向量 x y meshgrid x y 形成二维网格数据r sqrt x 2 y 2 eps 加上eps避免当分母r趋向于0时会无法定义z sin r r 产生z轴数据surf x y z 例 5MATLAB程序设计 第四代编程语言 4GL 一 MATLAB运算1 关系运算 MATLAB运算 续 关系运算用来比较两个同样大小的矩阵 或用来比较一个矩阵和一个标量 比较结果是一个0 1矩阵 当相应元素经关系运算结果为真时 对应位置上生成1 否则为0 例1 已知矩阵A 12579 找出大于4的元素的位置 A 13579 b A 4则输出的结果为b 00111注意 和 的区别 用于比较两个变量 当它们相等时返回1 当它们不相等时返回0 而 用于将运算的结果赋值给一个变量 MATLAB运算 续 2 逻辑运算 对于数值矩阵 当元素为0时 逻辑上为假 当元素为非0时逻辑上为真 一般地 当表达式逻辑上为假时 赋值0 当表达式逻辑上为真时 赋值1 注意符号输入 使用键盘左上角的上位字符 而 使用 Backspace 下面键的上位字符 MATLAB运算 续 例2 建立矩阵A和B 计算A C A B D A B B输出结果为C 110010D 111111ans 001000 二 MATLAB控制结构 顺序结构 选择结构 循环结构1 顺序结构顺序结构是由两个程序模块串接而成的 一个程序模块可以是一条语句 一段程序 一个函数等 顺序结构的两个程序模块按其在程序中的先后顺序依次执行 在用MATLAB编写程序时 只要将两个模块按顺序排列组织进程序就实现了顺序结构 2 选择结构执行MATLAB结构的基本过程是 首先根据规定条件进行逻辑判断 如果条件成立 执行后续程序模块 否则执行备选程序模块 MATLAB控制结构 续 if else end语句格式 if逻辑表达式程序模块1 else程序模块2 end如果逻辑表达式为真 则执行程序模块1 然后跳出该选择结构 执行end的后续命令 如果逻辑表达式为假 则执行程序模块2 然后跳出该选择结构 执行end的后续命令 MATLAB控制结构 续 if end语句格式if逻辑表达式程序模块 end如果逻辑表达式为真 则执行if和end之间的程序模块 否则 执行end的后续命令 MATLAB控制结构 续 当有三个或更多的选择时 可采用if结构的下列形式 格式 if逻辑表达式1程序模块1 elseif逻辑表达式2程序模块2 elseif逻辑表达式n程序模块n else程序模块n 1 end如果逻辑表达式j为真 则执行程序模块j 然后跳出该选择结构 执行end的后续命令 如果if和elseif后的所有逻辑表达式都为假 则执行程序模块n 1 然后跳出该选择结构 执行end的后续命令 MATLAB控制结构 续 3 循环结构 for语句forx 表达式1 表达式2 表达式3程序模块end其中表达式1的值是循环初值 表达式2的值为步长 表达式3的值为循环的终值 如果省略表达式2 则默认步长为1 该循环的执行过程是 将表达式1的值赋给

温馨提示

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

评论

0/150

提交评论