




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
M 1 Matlab及其应用 鲍文哈尔滨工业大学先进动力控制与可靠性研究所baowen 哈尔滨工业大学研究生教学课程 M 2 1课程内容简介 MATLAB基础基于matlab的数值分析绘制图形符号计算动态系统仿真 Simulink基础与其它程序交互 转换为c 编译 实时控制最优化方法 M 3 2Matlab的学习方法 必须做大量的练习 熟悉其中的函数联系和自己的课题相关 深刻的体会多看帮助文件 又一本好的参考书会提问题 寻求大家的帮助记住 Matlab可以做很多事情 M 4 学会Matlab将改变你的一生 网络对你的改变将远远的超过一台独立的计算机 M 5 OK Nowbegin M 6 MATLAB基础及其应用 第一讲MATLAB基础 哈尔滨工业大学动力工程控制与仿真研究所baowen 概述MATLAB基本使用MATLAB的基本矩阵分析矩阵操作流程控制 M 7 一 概述 MATLAB是一种交互式的以矩阵为基础的系统计算平台 它用于科学和工程的计算与可视化 它的优点在于快速开发计算方法 而不在于计算速度 M 8 1 1MATLAB的出现 70年代中期 CleveMoler和他的同事开发了LINPACK和EISPACK的Fortran子程序库70年代末期 CleveMoler在新墨西哥大学给学生开线性代数 为学生编写了接口程序 这程序取名为MATLAB 即MATrixLABoratory1983年春天 工程师JohnLittle与Moler SteveBangert一起开发了第二代专业版MATLAB1984年 MathWorks公司成立 MATLAB正是推向市场 M 9 1 2学习Matlab的基本原因 不希望学生在编程上化太多时间 课程目的不是学习编程社会化的运行带来的好处 合理利用可以节约大量的时间为什么相同的时间别人比自己做出了更多的事情 硕士论文调查结果面向对象的思想带来巨大的好处紧密结合科学的前沿FromBBS 博士论文 Matlab word M 10 1 3Matlab的版本演化 Matlab1 0Pcmatlab matlab386Matlab3 5 simulinkMatlab4 0 simlink内嵌Matlab5 0 全面的面向对象Matlab5 1 5 3Matlab6 0Matlab6 5 购并了MATRIXxMatlab7 0 2004 M 11 1 4MATLAB特点 高度适应性 开放性 MATLAB的工具箱可以任意增减 任何人可以自己生成MATLAB工具箱可扩充性 MATLAB的函数大多为ASCII文件 可以直接编辑 修改基于矩阵运算的工作平台 多版本 windows unix dos Macintosh极多的工具箱 M 12 1 5Matlab能做什么 基本的数据处理优化和解方程动态过程仿真 实时的和非实时的数据来源 Excel 数据库 A D等等嵌入式的控制 Pc 104和DSP神经元网络 小波分析 GA等等虚拟现实仿真 M 13 Matlab产品家族 Matlab扩展支持在matlab中队系统的实施和开发 工具箱 专用的函数库 解决特定领域的问题 Simulink非线性系统仿真Blockset是专门为simulink建立的模块 M 14 Matlab是所有系统工具的基础 M 15 设计自动化工具 M 16 一般用途工具 M 17 信号和图像处理 M 18 控制系统设计和分析 M 19 1 6网络资源 USENET新闻组MATLAB的新闻组是comp soft sys MATLAB 浏览器指向网络上的工具箱 M 20 1 6网络资源 2 BBS哈尔滨工业大学bbs telnet 上海交通大学bbs telnet 清华大学bbsmathtoolswww服务Matlab大观园 http www matlab M 21 1 7与MATLAB相似的软件 Mathmatica数学计算功能 复杂符号计算 主要在理论界Mathcad数学文字软件 直接写出报告Maple符号计算功能强大SciLab免费的matlab科隆体仿真软件 MATRIXx VisSim等等 M 22 二 MATLAB基础使用 2 1MATLAB安装启动Matlab的安装定制安装关于Java的问题 XP系统必须安装虚拟机安装pdf文件Matlab启动自动批处理startup mmatlabrc m M 23 2 2Matlab菜单的含义 多窗口界面Matlab的设置快速启动版本控制图形粘贴设置字体的改变 M 24 2 3帮助的使用 help命令 已知命令不知道用法lookfor命令 知道命令的关键词MatlabHelp 命令查找 索引 说明书Demo有效的利用帮助 M 25 2 3 1怎样获得详尽的帮助信息 首先是MATLAB窗口中的help命令 它最常用 最快 往往也是最有效的 给出关键字就能找到相应的说明 Help命令简单易用 但是它要求准确给出关键字 如果记忆不准 就很难找到 这时就应该用第二种方案 HelpDesk 这是MATLAB的HTML格式的帮助文档 有着很好的组织 可以在命令行键入helpdesk 进入 MatlabHelpDesk HelpDesk的搜索可以使用不完全关键字 这样即使遇到记忆模糊的情况也可以很快查到 前面两种方法所得到的帮助信息常常是不够细致的 需要用第三种途径来补充 这就是电子版的使用手册 MATLAB里包含了大量关于MATLAB安装 使用 编程以及各种工具箱等的电子版手册 全部为PDF格式 具有搜索功能 因此也可以在指定的手册中搜索关键字 使用非常方便 M 26 2 4Matlab变量 基本运算变量逗号 分号的意义行内编辑 注释 运算规则变量要求变量区分字母的大小写名字不能超过19个字符 第19个字符后的字符被忽略变量必须以字母开头 之后可以是任意字母 数字或者下滑线变量中不能含有标点符号 M 27 2 4 1特殊变量 M 28 2 4 2复数 不需要特殊的处理 复数可以表示为 a 10 9i复数运算不需要特殊处理 可以直接进行 M 29 2 4 3显示格式 MATLAB中所有的量为双字长浮点数 显示按下面显示规则 在缺省情况下 当结果为整数 作为整数显示 当结果为实数 以小数后4位的精度近似显示 如果结果中的有效数字超出了这一范围 以科学计数法显示结果 format命令改变显示格式 常用的的格式有long 16位 bank 2个十进制位 hex 十六进制 short 缺省 shorte 5位加指数 符号 longe 16位加指数 rat 有理数近似 M 30 2 5文件管理功能 who whos cd chdir pwd dir ls typewhatwhichclc edit echoloadclear packsavediary M 31 三 MATLAB的基本矩阵运算 3 1简单矩阵输入命令行简单键盘输入用于很少数据输入矩阵的方向 NaNInf文件形式输入可以用来读入试验数据大量的数据输入load数据文本文件 全部是数据 不含有数据mat文件 matlab自有的数据格式 M 32 2语句生成矩阵 线性等间距格式矩阵 使用from step tolinspace命令a linspace 1 10 5 logspace命令b logspace 0 2 10 矩阵连接c ab zerosoneseyerandn M 33 3 引入特殊的文件格式 引入输入 importwizard可以引入的文件格式 文本文件 txt dat图片文件 gif bmp jpg avi声音 wav au电子表格 csv xls wk1 M 34 直接读入特殊格式文件 文本类型 M 35 直接读入特殊格式文件 二进格式 M 36 3 2矩阵运算 矩阵的转置用符号 来表示和实现非共轭转置 矩阵的四则运算 点乘 右除 左除 矩阵的乘方 矩阵乘方 元素对元素的乘方矩阵的范数norm1 范数2 范数 无穷范数条件数cond M 37 3 3矩阵的超越函数 MATLAB中exp sprt sin cos等命令可以直接使用在矩阵上 这种运算只是定义在矩阵的单个元素上 即分别对矩阵的每个元素进行运算 MATLAB中也提供了基本的三角函数 注意其中的取整 M 38 3 3矩阵的超越函数 M 39 3 4关系和逻辑运算 1关系操作符MATLAB常用的关系操作符有 大于 大于或等于 等于 不等于 MATLAB的关系操作符可以用来比较两个大小相同的数组 或者比较一个数组和一个标量 在与标量比较时 结果和数组大小一样 a 1 9 b a 4b 000011111 c a a 4 c 56789 M 40 2逻辑操作符 逻辑操作符定义了一种与或非的关系表达式 MATLAB的逻辑操作符有 与 或 非 例如 c a 4 c 111100000 c a 4 a 7 c 000011000 M 41 四 矩阵操作 4 1矩阵下标MATLAB通过确认下标 可以对矩阵进行插入子块 提取子块和重排子块的操作 为了提取矩阵a的第n行 第m列的元素值 使用a n m 可以得到 同样 将矩阵a的第n行 第m列的元素值赋为r 使用a n m r这样的命令 需要注意的是 如果在提取矩阵值时 行或列的值大于矩阵的大小 则出错 而在矩阵赋值时 如果行或者列超出矩阵的大小 则MATLAB自动扩充矩阵的规模 使得可以赋值 扩充部分以零填充 M 42 4 1矩阵下标 利用矩阵下标 MATLAB还提供了子矩阵功能 同样是上面的a n m 如果n和m是向量 而不是标量 则将获得指定矩阵的子块 同样 矩阵的子块还可以被赋值 如果在取子块时 n或m是 则返回指定的所有行或列 如果在矩阵子块赋值为空矩阵 用 表示 则相当于消除相应的矩阵子块 矩阵的序号编址 按列计数 M 43 4 2矩阵大小 在MATLAB命令行中 使用whos命令可以察看到所有变量的大小 为了获得矩阵或者向量的大小 MATLAB还提供了两个有用的函数size和length size按照下面的形式使用 m n size a x 一般的 函数的输入参量x不是用 这是当只有一个输出变量时 size返回一个行向量 第一个数为行数 第二个数为列数 如果有两个输出变量 第一个返回量为行数 第二个返回数为列数 当使用x时 x 1返回行数 x 2返回列数 这时只有一个返回值 length返回行数或者列数的最大值 即length a max size a M 44 4 3矩阵操作函数 MATLAB提供了一组执行矩阵操作的函数 例如flipud a 使得矩阵上下翻转 fliplr a 使得矩阵左右翻转 rot90 a 使得矩阵逆时针翻转900等等 M 45 4 4逻辑矩阵 逻辑矩阵是大小和对应矩阵相同 而元素为0或者1的数组 逻辑数组一般由关系算子创建 可以使用逻辑矩阵来取得矩阵的部分元素值 得到矩阵中所有大于3的值 使用逻辑矩阵也可以对矩阵的部分赋值 M 46 4 5矩阵查找和排序 子矩阵的查找使用find命令完成 它返回关系表达式为真的下标 例如 a 10 20 find a 15 ans 7891011矩阵的排序使用sort函数 它将矩阵按照升序排列 M 47 5矩阵的查找和排序 子矩阵的查找使用find命令完成 它返回关系表达式为真的下标 矩阵的排序使用sort函数 它将矩阵按照升序排列 应用 去奇异点 a find a std a 3 嵌入数据 在指定大小的数据后加入数据替换 替换指定大小的数据段 M 48 6字符串处理 MATLAB真正强有力的地方在于它的数值处理能力 然而 经常希望操作文本 例如把标号和标题放在图上 在MATLAB里 文本当作特征字符串或简单地当作字符串 字符串内的单引号是由两个连续的单引号来表示 字符串连接可以直接从数组连接中得到 M 49 字符串函数 eval string 作为一个MATLAB命令求字符串的值eval try catch blanks n 返回一个n个零或空格的字符串deblank去掉字符串中后拖的空格feval求由字符串给定的函数值findstr从一个字符串内找出字符串isletter字母存在时返回真值isspace空格字符存在时返回真值isstr输入是一个字符串 返回真值lasterr返回上一个所产生MATLAB错误的字符串strcmp字符串相同 返回真值strrep用一个字符串替换另一个字符串strtok在一个字符串里找出第一个标记 M 50 类型转换 charx 776584766566 char x int2str四舍五入为整数转换为字符串num2str将数字转换为字符串mat2str将矩阵的数据转换为字符串str2num M 51 7单元结构 单元结构 cell把不同属性的数据纳入一个变量中类似于具有下标的矩阵和多维数组 但这些下标不是用圆括号 而是用大括号括起来的 pp cellstr asd testetet sfsdfsdfdfgsdgsg sfdfgfdfgf 显示内容 pp 1 和pp 1 的区别清空一个单元数据 pp 3 和pp 3 的区别 M 52 8结构体 结构体将某一类相关的信息纳入一个统一的变量名字管理 先建立一个结构体 a b 1构建一个结构体的数组 pp m n struct a 删除一个变量 pp rmfield pp b M 53 四 脚本 对于简单问题 使用直接输入命令简单有效 对稍复杂和多次重复的应用 直接输入命令比较麻烦 MATLAB提供了逻辑解决方案 它允许用户把多个命令放在一个简单的文本文件中 如同在MATLAB中键入命令一般 这种文件称为脚本文件 由于脚本文件以m为扩展名 它常称为M文件 脚本文件为文本形式的 对跨平台处理十分有利 使用脚本文件 可以把命令保存在磁盘上 便于以后的访问 同时对使用大的数组也带来的方便 增加注释可以为脚本中的命令作文挡以免以后忘记 M 54 4 1流程控制 为了便于应用 MATLAB提供了一些流程控制的命令 这些命令对脚本编写带来了一些方便 但是需要注意的是 尽量不要使用这些流程控制命令 尤其是循环控制命令 1for循环for循环允许一组命令以固定的次数重复 它的一般形式是forx arraycommandendfor和end之间的命令串按数组array的每一列执行一次 直到n次后终止 M 55 For循环应当注意的一些方面 for循环不能使用内部重新赋值循环变量而终止 for循环内部接受任何有效的MATLAB数组 for循环可以嵌套 只要有矩阵形式可以解决的问题 不要使用for循环 使用for循环的算法执行很慢 一个好的MATLAB算法部应当出现循环语句 Tic toc循环可以使用break跳出 但只跳出所在的循环 不跳出整个嵌套结构 M 56 2while循环 与for循环以固定的次数求一组指令相反 while循环以不定的次数求一组语句的值 While循环的一般形式为 whileexpressioncommondsend只要表达式expression里的所有元素为真 就执行命令串commands 通常表达式求值给一个标量值 单数组值也同样有效 M 57 3if else enf结构 很多情况下 命令的序列必须根据关系的检验有条件的执行 它由if else end结构提供 它的结构如下 ifexpression1commands1elseifexpression2commands2elseif elsecommandsend M 58 If Then Else 在执行过程中 MATLAB依次检查各个表达式 只执行第一个表达式为真的命令串 接下来的关系表达式不检验 跳过其余的if else end结构 而且 最后的else命令可有可无 M 59 try catch结构 可以进行错误的处理 提高计算的可靠性try可能出错的语句catch错误处理end M 60 4 2函数 把一个比较大的任务分解为多个比较小的任务 它们之间通过调用实现参数传递 小任务可以是函数 1函数调用常见的函数调用形式为 out1 out2 function in1 in2 一个函数可以嵌套 也可以调用其它的函数 甚至调用自己 也就是递归调用 函数文件 函数名称和文件名必须相同 M 61 函数 需要注意函数文件的放置位置 一般自己的函数文件放在当前目录 如果对一个专题有了足够多的函数 可以生成一个工具箱 放在一个固定的目录下 并在MATLAB中加入这个目录路径即可 使用函数可以加快计算速度 MATLAB首次执行一个函数时 它将打开的文件编译为存储器内部形式 加速了执行速度 普通的m文件不被编译 在每次编译时 文件将逐行解释执行 函数的前一部分注释为帮助行 在使用help命令是看到的为这些注释行 M 62 2参数传递 MATLAB函数的输入输出数目都可以变化 通过这个特性 可以实现一些自定义的功能 函数的输入输出参数数目可以通过变量nargin和nargout获得 函数调用中可以使用少于规定的输入输出参数数目 但是不能更多 在MATLAB中 参数具有自己的专有工作空间 函数中的参数和命令行参数不在一个空间中 它们的唯一联系为函数的输入输出变量 输入参数在函数中是可读的 但任何改动不会传递回上一级空间 使用global命令可以将变量说明为全局的 则在函数 命令行等都可以共享这些变量 在实际应用中 应当尽量避免使用全局变量 M 63 3函数注意 函数可以按少于函数M文件中所规定的输入和输出变量进行调用 但不能用多于函数M文件中所规定的输入和输出变量数目 如果输入和输出变量数目多于函数M文件中function语句一开始所规定的数目 则调用时自动返回一个错误 当调用一个函数时 所用的输入和输出的参量的数目 在函数内是规定好的 函数工作空间变量nargin包含输入参量个数 函数工作空间变量nargout包含输出参量个数 事实上 这些变量常用来设置缺省输入变量 并决定用户所希望的输出变量 在M文件函数里 变量nargout可用来检验输出参量的个数 并按要求修正输出变量的创建 M 64 3函数注意 函数有它们自己的专用工作空间 它与MATLAB的工作空间分开 函数内变量与MATLAB工作空间之间唯一的联系是函数的输入和输出变量 如果函数任一输入变量值发生变化 其变化仅在函数内出现 不影响MATLAB工作空间的变量 函数内所创建的变量只驻留在函数的工作空间 而且只在函数执行期间临时存在 以后就消失 因此 从一个调用到下一个调用 在函数工作空间变量存储信息是不可能的 M 65 3函数注意 当调用一个函数时 输入变量不会拷贝到函数的工作空间 但使它们的值在函数内可读 然而 改变输入变量内的任何值 那么数组就拷贝到函数工作空间 进而 按缺省 如果输出变量与输入变量相同 例如 函数x fun x y z 中的x 那么就将它拷贝到函数的工作空间 因此 为了节约存储和增加速度 最好是从大数组中抽取元素 然后对它们作修正 而不是使整个数组拷贝到函数的工作空间 M 66 3函数注意 如果变量说明是全局的 函数可以与其它函数 MATLAB工作空间和递归调用本身共享变量 为了在函数内或MATLAB工作空间中访问全局变量 在每一个所希望的工作空间 变量必须说明是全局的 实际编程中 无论什么时候应尽量避免使用全局变量 要是用了全局变量 建议全局变量名要长 它包含所有的大写字母 并有选择地以首次出现的M文件的名字开头 如果遵循建议 则在全局变量之间不必要的互作用减至最小 M 67 3函数注意 MATLAB以搜寻脚本文件的同样方式搜寻函数M文件 例如 输入 cow MATLAB首先认为cow是一个变量 如果它不是 那么MATLAB认为它是一个内置函数 如果还不是 MATLAB检查当前cow m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-江苏-江苏管道工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏城管监察员三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-新疆-新疆食品检验工三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西房管员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东中式面点师三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-安徽-安徽检验员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京防疫员四级(中级工)历年参考题库典型考点含答案解析
- 2025年银行金融类-金融考试-银行业专业人员中级(法规+个人理财)历年参考题库典型考点含答案解析
- 2025年职业技能鉴定-眼镜定配工-眼镜定配工高级历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-海洋石油-海洋石油技能鉴定电工历年参考题库含答案解析(5套)
- 滁州市珠龙广卫绢云母粉厂滁州市南谯区将军山绢云母矿1万吨-年露天采矿工程项目环境影响报告书
- 人民医院心血管外科临床技术操作规范2023版
- 2023年江苏小高考历史试卷
- 主要组织相容性复合体及其编码分子
- 优化物理教学策略的思考(黄恕伯)
- 中国移动-安全-L1,2,3(珍藏版)
- 2017年全国大学生数学建模A题
- 2023年专升本计算机题库含答案专升本计算机真题
- scratch3.0编程校本课程
- GB/T 1685-2008硫化橡胶或热塑性橡胶在常温和高温下压缩应力松弛的测定
- GB/T 14825-1993农药可湿性粉剂悬浮率测定方法
评论
0/150
提交评论