matlab语言基础ppt课件.ppt_第1页
matlab语言基础ppt课件.ppt_第2页
matlab语言基础ppt课件.ppt_第3页
matlab语言基础ppt课件.ppt_第4页
matlab语言基础ppt课件.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1 CH2 MATLAB语言基础 第一节使用MATLAB的窗口环境一 MATLAB语言的显著特点1 具有强大的矩阵运算能力 MatrixLaboratory 矩阵实验室 使得矩阵运算非常简单 2 是一种演算式语言MATLAB的基本数据单元是既不需要指定维数 也不需要说明数据类型的矩阵 向量和标量为矩阵的特例 而且数学表达式和运算规则与通常的习惯相同 因此MATLAB语言编程简单 使用方便 例exp2 1 m 2 二 MATLAB命令窗口1 启动MATLAB命令窗口计算机安装好MATLAB之后 双击MATLAB图标 就可以进入命令窗口 此时意味着系统处于准备接受命令的状态 可以在命令窗口中直接输入命令语句 MATLAB语句形式 变量 表达式 通过等于符号将表达式的值赋予变量 当键入回车键时 该语句被执行 语句执行之后 窗口自动显示出语句执行的结果 如果希望结果不被显示 则只要在语句之后加上一个分号 即可 此时尽管结果没有显示 但它依然被赋值并在MATLAB工作空间中分配了内存 3 2 命令行编辑器 1 方向键和控制键可以编辑修改已输入的命令 回调上一行命令 回调下一行命令 2 命令窗口的分页输出moreoff 不允许分页moreon 允许分页more n 指定每页输出的行数回车前进一行 空格键显示下一页 q结束当前显示 3 多行命令 如果命令语句超过一行或者太长希望分行输入 则可以使用多行命令继续输入 S 1 12 13 4 9 4 18 4 三 变量和数值显示格式1 变量 1 变量的命名 变量的名字必须以字母开头 不能超过19个字符 之后可以是任意字母 数字或下划线 变量名称区分字母的大小写 变量中不能包含有标点符号 2 一些特殊的变量ans 用于结果的缺省变量名i j 虚数单位pi 圆周率nargin 函数的输入变量个数eps 计算机的最小数nargout 函数的输出变量个数inf 无穷大realmin 最小正实数realmax 最大正实数nan 不定量flops 浮点运算数 5 3 变量操作在命令窗口中 同时存储着输入的命令和创建的所有变量值 它们可以在任何需要的时候被调用 如要察看变量a的值 只需要在命令窗口中输入变量的名称即可 a2 数值显示格式任何MATLAB的语句的执行结果都可以在屏幕上显示 同时赋值给指定的变量 没有指定变量时 赋值给一个特殊的变量ans 数据的显示格式由format命令控制 format只是影响结果的显示 不影响其计算与存储 MATLAB总是以双字长浮点数 双精度 来执行所有的运算 6 如果结果为整数 则显示没有小数 如果结果不是整数 则输出形式有 format short 短格式 5位定点数 99 1253formatlong 长格式 15位定点数99 12345678900000formatshorte 短格式e方式9 9123e 001formatlonge 长格式e方式9 912345678900000e 001formatbank 2位十进制99 12formathex 十六进制格式 7 四 简单的数学运算 例exp2 2 m 1 常用的数学运算符 乘 左除 右除 幂 在运算式中 MATLAB通常不需要考虑空格 多条命令可以放在一行中 它们之间需要用分号隔开 逗号告诉MATLAB显示结果 而分号则禁止结果显示 2 常用数学函数abs sin cos tan asin acos atan sqrt exp imag real sign log log10 conj 共扼复数 等五 MATLAB的工作空间1 MATLAB的工作空间包含了一组可以在命令窗口中调整 调用 的参数who 显示当前工作空间中所有变量的一个简单列表 8 whos 则列出变量的大小 数据格式等详细信息clear 清除工作空间中所有的变量clear变量名 清除指定的变量2 保存和载入workspace 1 savefilenamevariables将变量列表variables所列出的变量保存到磁盘文件filename中Variables所表示的变量列表中 不能用逗号 各个不同的变量之间只能用空格来分隔 未列出variables时 表示将当前工作空间中所有变量都保持到磁盘文件中 缺省的磁盘文件扩展名为 mat 可以使用 定义不同的存储格式 ASCII V4等 9 2 loadfilenamevariables将以前用save命令保存的变量variables从磁盘文件中调入MATLAB工作空间 用load命令调入的变量 其名称为用save命令保存时的名称 取值也一样 Variables所表示的变量列表中 不能用逗号 各个不同的变量之间只能用空格来分隔 未列出variables时 表示将磁盘文件中的所有变量都调入工作空间 3 退出工作空间quit或exit 10 六 文件管理文件管理的命令 包括列文件名 显示或删除文件 显示或改变当前目录等 what dir type delete cd which what 显示当前目录下所有与matlab相关的文件及它们的路径 dir 显示当前目录下所有的文件which 显示某个文件的路径cdpath 由当前目录进入path目录cd 返回上一级目录cd 显示当前目录typefilename 在命令窗口中显示文件filenamedeletefilename 删除文件filename 11 七 使用帮助1 help命令 在命令窗口中显示MATLBA的所有函数都是以逻辑群组方式进行组织的 而MATLAB的目录结构就是以这些群组方式来编排的 helpmatfun 矩阵函数 数值线性代数helpgeneral 通用命令helpgraphics 通用图形函数helpelfun 基本的数学函数helpelmat 基本矩阵和矩阵操作helpdatafun 数据分析和傅立叶变换函数helpops 操作符和特殊字符 12 helppolyfun 多项式和内插函数helplang 语言结构和调试helpstrfun 字符串函数helpcontrol 控制系统工具箱函数2 helpwin 帮助窗口3 helpdesk 帮助桌面 浏览器模式4 lookfor命令 返回包含指定关键词的那些项5 demo 打开示例窗口 13 矩阵生成不但可以使用纯数字 含复数 也可以使用变量 或者说采用一个表达式 矩阵的元素直接排列在方括号内 行与行之间用分号隔开 每行内的元素使用空格或逗号隔开 大的矩阵可以用分行输入 回车键代表分号 y 2 4 5368 y 245368 一 矩阵的输入 第二节MATLAB矩阵运算及多项式处理 a 1 b 2 c 3 x 5bc a ba cc b x 5 0002 0003 0002 0004 0001 500 1 在命令窗口中输入 14 1 用线性等间距生成向量矩阵 start step end a 1 2 10 a 13579 其中start为起始值 step为步长 end为终止值 当步长为1时可省略step参数 另外step也可以取负数 2 语句生成 2 a linspace n1 n2 n 在线性空间上 行矢量的值从n1到n2 数据个数为n 缺省n为100 a linspace 1 10 10 a 12345678910 15 4 一些常用的特殊矩阵单位矩阵 eye m n eye m 零矩阵 zeros m n zeros m 一矩阵 ones m n ones m 对角矩阵 对角元素向量V a1 a2 an A diag V 随机矩阵 rand m n 产生一个m n的均匀分别的随机矩阵 3 a logspace n1 n2 n 在对数空间上 行矢量的值从10n1到10n2 数据个数为n 缺省n为50 这个指令为建立对数频域轴坐标提供了方便 a logspace 1 3 3 a 101001000 16 eye 2 3 ans 100010 zeros 2 3 ans 000000 ones 2 3 ans 111111 V 572 A diag V A 500070002 eye 2 ans 1001 zeros 2 ans 0000 ones 2 ans 1111 如果已知A为方阵 则V diag A 可以提取A的对角元素构成向量V 17 1 转置 对于实矩阵用 符号或 求转置结果是一样的 然而对于含复数的矩阵 则 将同时对复数进行共轭处理 而 则只是将其排列形式进行转置 a 123 456 a 142536 a 123 456 a 142536 b 1 2i2 7i b 1 0000 2 0000i2 0000 7 0000i b 1 2i2 7i b 1 0000 2 0000i2 0000 7 0000i 二 矩阵的运算 18 和 如 a 12 34 b 35 59 c a bd a b c d 47 2 3813 2 5 a b 1323 2951 a b 0 500 50 3 50 1 50 a b 1 1 23 a 3 3754 81118 a b 310 1536 a b 0 330 40 0 600 44 a b 3 002 50 1 672 25 a 3 18 2764 2 四则运算与幂运算 只有维数相同的矩阵才能进行加减运算 注意只有当两个矩阵中前一个矩阵的列数和后一个矩阵的行数相同时 才可以进行乘法运算 a b运算等效于求a x b的解 而a b等效于求x b a的解 只有方阵才可以求幂 点运算是两个维数相同矩阵对应元素之间的运算 在有的教材中也定义为数组运算 19 3 逆矩阵与行列式计算求逆 inv A 求行列式 det A 要求矩阵必须为方阵 4 了解矩阵超越函数在MATLAB中exp sqrt等命令也可以作用到矩阵上 但这种运算是定义在矩阵的单个元素上的 即分别对矩阵的每一个元素进行计算 超越数学函数可以在函数后加上m而成为矩阵的超越函数 例如 expm sqrtm 矩阵的超越函数要求运算矩阵为方阵 a 123 456 235 b inv a b 2 33330 33331 00002 66670 3333 2 0000 0 6667 0 33331 0000 det a ans 3 20 A m n 提取第m行 第n列元素A n 提取第n列元素A m 提取第m行元素A m1 m2 n1 n2 提取第m1行到第m2行和第n1列到第n2列的所有元素 提取子块 A 得到一个长列矢量 该矢量的元素按矩阵的列进行排列 矩阵扩展 如果在原矩阵中一个不存在的地址位置上设定一个数 赋值 则该矩阵会自动扩展行列数 并在该位置上添加这个数 而且在其他没有指定的位置补零 消除子块 如果将矩阵的子块赋值为空矩阵 则相当于消除了相应的矩阵子块 三 矩阵的操作 1 矩阵下标MATLAB通过确认矩阵下标 可以对矩阵进行插入子块 提取子块和重排子块的操作 2 矩阵的大小 m n size A x 返回矩阵的行列数m与n 当x 1 则只返回行数m 当x 2 则只返回列数n length A max size A 返回行数或列数的最大值 rank A 求矩阵的秩 a 123 345 m n size a m 2n 3 3 了解矩阵操作函数 flipud fliplr rot90 length a ans 3 max size a ans 3 rank a ans 2 22 在MATLAB中 多项式使用降幂系数的行向量表示 如 多项式 p poly r p 1 12 025116 四 多项式处理 1 多项式的建立与表示方法 r roots p r 11 74732 7028 1 2251 1 4672i 1 2251 1 4672i 表示为 p 1 12025116 使用函数roots可以求出多项式等于0的根 根用列向量表示 若已知多项式等于0的根 函数poly可以求出相应多项式 23 2 多项式的运算 相乘conva 123 b 12 c conv a b 1476conv指令可以嵌套使用 如conv conv a b c 相除deconv q r deconv c b q 123 商多项式r 000 余多项式求多项式的微分多项式polyderpolyder a 22求多项式函数值polyval p n 将值n代入多项式求解 polyval a 2 11 24 3 多项式的拟合多项式拟合又称为曲线拟合 其目的就是在众多的样本点中进行拟合 找出满足样本点分布的多项式 这在分析实验数据 将实验数据做解析描述时非常有用 命令格式 p polyfit x y n 其中x和y为样本点向量 n为所求多项式的阶数 p为求出的多项式 例exp2 15 m 4 多项式插值多项式插值是指根据给定的有限个样本点 产生另外的估计点以达到数据更为平滑的效果 该技巧在信号处理与图像处理上应用广泛 25 所用指令有一维的interp1 二维的interp2 三维的interp3 这些指令分别有不同的方法 method 设计者可以根据需要选择适当的方法 以满足系统属性的要求 Helppolyfun可以得到更详细的内容 y interp1 xs ys x method 在有限样本点向量xs与ys中 插值产生向量x和y 所用方法定义在method中 有4种选择 nearest 执行速度最快 输出结果为直角转折linear 默认值 在样本点上斜率变化很大spline 最花时间 但输出结果也最平滑cubic 最占内存 输出结果与spline差不多例exp2 16 m 26 五 MATLAB数据处理1 矩阵分解 1 奇异值分解 U S V svd A 例 a 9868可以验证 u u Iv v Iu s v a 求矩阵A的奇异值及分解矩阵 满足U S V A 其中U V矩阵为正交矩阵 U U I S矩阵为对角矩阵 它的对角元素即A矩阵的奇异值 u s v svd a u 0 7705 0 63750 63750 7705s 15 5765001 5408v 0 6907 0 72310 72310 6907 27 2 特征值分解 V D eig A 例 a 9868 v d eig a v 0 7787 0 73200 62740 6813d 15 4462001 5538 求矩阵A的特征向量V及特征值D 满足A V V D 其中D的对角线元素为特征值 V的列为对应的特征向量 如果D eig A 则只返回特征值 可以验证 A V V D 28 3 正交分解 Q R qr A 例 a 9868 q r qr a q 0 8321 0 5547 0 55470 8321r 10 8167 11 094002 2188 将矩阵A做正交化分解 使得Q R A 其中Q为正交矩阵 其范数为1 指令norm Q 1 R为对角化的上三角矩阵 norm q ans 1 q rans 9 00008 00006 00008 0000 29 4 三角分解 L U lu A 将A做对角线分解 使得A L U 其中L为下三角矩阵 U为上三角矩阵 注意 L实际上是一个 心理上 的下三角矩阵 它事实上是一个置换矩阵P的逆矩阵与一个真正下三角矩阵L1 其对角线元素为1 的乘积 L1 U1 P lu A 例 a 123 456 789 比较 l1 u1 p lu a l u lu a 30 l1 1 00000 141 0000 570 501 00u1 7 008 009 0000 861 71000 00p 001100010 l 0 141 0000 570 501 001 0000u 7 008 009 0000 861 71000 00 可以验证 u1 u inv p l1 la l up a l1 u1 31 2 数据分析 1 绘制函数图形 fplot 2 求极值 fmin fmins 3 求零点 寻找一维函数的过零点fzero 4 频谱分析 fft y FFT x unwrap abs angle画出幅频和相频曲线 5 了解数据分析函数 max min mean sum prod等 6 了解积分运算 trap2 quad quad83 常微分方程数值解 t x ode23 xfun t0 tf x0 tol t x ode45 xfun t0 tf x0 tol 32 第三节 绘图简介 MATLAB提供了丰富的绘图功能helpgraph2d可得到所有画二维图形的命令helpgraph3d可得到所有画三维图形的命令下面介绍常用的二维图形命令 1 基本的绘图命令plot x1 y1 option1 x2 y2 option2 x1 y1给出的数据分别为x y轴坐标值 option1为选项参数 以逐点连折线的方式绘制1个二维图形 同时类似地绘制第二个二维图形 等 这是plot命令的完全格式 在实际应用中可以根据需要进行简化 比如 plot x y plot x y option 选项参数option定义了图形曲线的颜色 线型及标示符号 它由一对单引号括起来 例exp2 3 mexp2 3 m 33 2 选择图像figure 1 figure 2 figure n 打开不同的图形窗口 以便绘制不同的图形 3 gridon 在所画出的图形坐标中加入栅格gridoff 除去图形坐标中的栅格 4 holdon 把当前图形保持在屏幕上不变 同时允许在这个坐标内绘制另外一个图形 holdoff 使新图覆盖旧的图形例exp2 4 mexp2 4 m 34 6 文字标示text x y 字符串 在图形的指定坐标位置 x y 处 标示单引号括起来的字符串 gtext 字符串 利用鼠标在图形的某一位置标示字符串 title 字符串 在所画图形的最上端显示说明该图形标题的字符串 xlabel 字符串 ylabel 字符串 设置x y坐标轴的名称 输入特殊的文字需要用反斜杠 开头 7 legend 字符串1 字符串2 字符串n 在屏幕上开启一个小视窗 然后依据绘图命令的先后次序 用对应的字符串区分图形上的线 例exp2 5 m 5 设定轴的范围axis xminxmaxyminymax 例exp2 5 maxis equal 将x坐标轴和y坐标轴的单位刻度大小调整为一样 35 9 semilogx 绘制以x轴为对数坐标 以10为底 y轴为线性坐标的半对数坐标图形 semilogy 绘制以y轴为对数坐标 以10为底 x轴为线性坐标的半对数坐标图形 例exp2 17 m 8 subplot mnk 分割图形显示窗口m 上下分割个数 n 左右分割个数 k 子图编号例exp2 6 m 10 了解应用型绘图指令 可用于数值统计分析或离散数据处理bax x y hist y x stairs x y stem x y 例exp2 7 m 36 对于图形的属性编辑同样可以通过在图形窗口上直接进行 但图形窗口关闭之后编辑结果不会保存 10 一点补充说明 37 一 MATLBA程序的基本设计原则 1 后面的内容是程序的注解 要善于运用注解使程序更具可读性 2 养成在主程序开头用clear指令清除变量的习惯 以消除工作空间中其他变量对程序运行的影响 但注意在子程序中不要用clear 3 参数值要集中放在程序的开始部分 以便维护 要充分利用MATLAB工具箱提供的指令来执行所要进行的运算 在语句行之后输入分号使其及中间结果不在屏幕上显示 以提高执行速度 4 input指令可以用来输入一些临时的数据 而对于大量参数 则通过建立一个存储参数的子程序 在主程序中用子程序的名称来调用 5 程序尽量模块化 也就是采用主程序调用子程序的方法 将所有子程序合并在一起来执行全部的操作 6 充分利用Debugger来进行程序的调试 设置断点 单步执行 连续执行 并利用其他工具箱或图形用户界面 GUI 的设计技巧 将设计结果集成到一起 7 设置好MATLAB的工作路径 以便程序运行 第四节MATLAB程序设计入门 38 8 MATLAB程序的基本组成结构 说明清除命令 清除workspace中的变量和图形 clear close 定义变量 包括全局变量的声明及参数值的设定逐行执行命令 指MATLAB提供的运算指令或工具箱 提供的专用命令控制循环 包含for ifthen switch while等语句逐行执行命令 end绘图命令 将运算结果绘制出来当然更复杂程序还需要调用子程序 或与simulink以及其他应用程序结合起来 39 进入MATLAB的Editor Debugger窗口来编辑程序在编辑环境中 文字的不同颜色显示表明文字的不同属性 绿色 注解 黑色 程序主体 红色 属性值的设定 蓝色 控制流程 在运行程序之前 必须设置好MATLAB的工作路径 使得所要运行的程序及运行程序所需要的其他文件处在当前目录之下 只有这样 才可以使程序得以正常运行 否则可能导致无法读取某些系统文件或数据 从而程序无法执行 通过cd指令在命令窗口中可以更改 显示当前工作路径 通过路径浏览器 pathbrowser 也可以进行设置 二 M文件的编辑及MATLAB工作路径的设置 40 2 程序文件以 m格式进行存取 包含一连串的MATLAB指令和必要的注解 需要在工作空间中创建并获取变量 也就是说处理的数据为命令窗口中的数据 没有输入参数 也不会返回参数 程序运行时只需在工作空间中键入其名称即可 三 MATLAB的程序类型 MATLAB的程序类型有三种 一种是在命令窗口下执行的脚本M文件 另外一种是可以存取的M文件 也即程序文件 最后一种是函数 function 文件 1 脚本M文件在命令窗口中输入并执行 它所用的变量都要在工作空间中获取 不需要输入输出参数的调用 退出MATLAB后就释放了 41 1 函数定义行 关键字function function out1 out2 filename in1 in2 输入和输出 返回 的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出 2 第一行帮助行 即H1行以 开头 作为lookfor指令搜索的行 3 函数体说明及有关注解以 开头 用以说明函数的作用及有关内容如果不希望显示某段信息 可在它的前面加空行 4 函数体语句函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量 即在该函数返回之后 这些变量会自动在MATLAB的工作空间中清除掉 如果希望这些中间变量成为在整个程序中都起作用的变量 则可以将它们设置为全局变量 3 函数文件例myhilb1 mmyhilb m 与在命令窗口中输入命令一样 函数接受输入参数 然后执行并输出结果 用help命令可以显示它的注释说明 具有标准的基本结构 42 1 子程序与主程序之间的数据是通过参数进行传递的 子程序应用主程序传递来的参数进行计算后 将结果返回主程序 例exp2 9 m 四 声明子程序 函数程序 变量 2 如果一个函数内的变量没有特别声明 那么这个变量只在函数内部使用 即为局部变量 如果两个或多个函数共用一个变量 或者说在子程序中也要用到主程序中的变量 注意不是参数 那么可以用global来将它声明为全局变量 例exp2 10 m全局变量的使用可以减少参数传递 合理利用全局变量可以提高程序执行的效率 43 字符串要用单引号并用括号括在里面 如 disp textstring disp字符串显示命令textstring 五 字符串及其宏命令 在单引号里边的字符串可以作为矢量或矩阵的元素 使用disp命令或输入变量名就可以显示它们表示的字符串 如 a thisisa textstring Allrowsinthebracketedexpressionmusthavethesamenumberofcolumns 元素1含9个字符 包括空格 元素2含有11个字符 因此只要在元素1中加入2个空格即可解决问题 aa thisisa textstring disp aa aa aa thisisathisisatextstringtextstring 44 宏是MATLAB语言用在常用命令部分的缩写 它可以被存储用于建立M文件的一部分 宏命令采用字符串 并使用eval命令去执行宏命令 下例是采用宏命令计算阶乘的例子 fct prod 1 n 求10的阶乘 n 10 eval fct ans 3628800 六 常用的编程命令 例exp2 8 m pause 停止m文件的执行直至有键按下 pause n 将使程序暂停n秒 echoon off 控制是否在屏幕上显示程序内容 keyboard 停止程序执行 把控制权交给键盘 输入return并回车后继续程序执行 x input prompt 把输入的字符串作为提示符 等待使用者输入一个响应 然后把它赋值到x 45 MATLAB的运算符有三种类型 算术运算符 关系运算符 逻辑运算符 它们的处理顺序依次为算术运算符 关系运算符 逻辑运算符 在前面我们已经介绍例算术运算符 这里我们着重介绍后两种运算符 七 关系与逻辑运算符 1 关系运算符假设有 A 12 1 5 B 0231 大于A Bans 1000 A 1ans 0100 大于等于A Bans 1100 等于A Bans 0100 A 1ans 1000 不等于A Bans 1011 A 1ans 0111 46 非 A 0010 1 0 2 逻辑运算符 注意 在处理逻辑运算时 运算元只有两个值即0和1 所以如果指定的数为0 MATLAB认为其为0 而任何数不等于0 则认为是1 设有 A 5 40 0 5 B 0109 与A B 0101 A 1 1101 或A B 1101 A 1 1111 4

温馨提示

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

评论

0/150

提交评论