首页 matlab基础教程第一、二章 MATLAB 入门

matlab基础教程第一、二章 MATLAB 入门

举报
开通vip

matlab基础教程第一、二章 MATLAB 入门 第一章 MATLAB 入门 Chapter one: Introduction to MATLAB MATLAB(Matrix Laboratory)是美国 MathWorks 公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境,是目前最好的科学计算类软件。作为和 Mathematica、Maple 并列的三大数学软件之一,其强项就是强大的矩阵计算以及仿真能力。MATLABN 提供了自己的编译器:全面兼容 C++ 以及 Fortran 两大语言。所以 MATLAB 是工程师、科研工作者手上最...

matlab基础教程第一、二章 MATLAB 入门
第一章 MATLAB 入门 Chapter one: Introduction to MATLAB MATLAB(Matrix Laboratory)是美国 MathWorks 公司开发的用于概念 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 ,算法开发,建模仿真,实时实现的理想的集成环境,是目前最好的科学计算类软件。作为和 Mathematica、Maple 并列的三大数学软件之一,其强项就是强大的矩阵计算以及仿真能力。MATLABN 提供了自己的编译器:全面兼容 C++ 以及 Fortran 两大语言。所以 MATLAB 是工程师、科研工作者手上最好的语言,最好的工具和环境,已经成为广大科研人员的最值得信赖的助手和朋友。除了具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能,是具有全部语言功能和特征的新一代软件开发平台。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言简捷得多.MATLAB是国际公认的优秀数学应用软件之一。 目前,MATLAB 已发展成为适合众多学科,多种工作平台、功能强大的大型软件,成为了诸多领域的开发首选软件,并且, MATLAB 还具有500 余家第三方合作伙伴,分布在科学计算、机械动力、化工、计算机通讯、汽车、金融等领域,接口方式包括了联合建模、数据共享、开发流程衔接等等。在欧美等国家的高校,MATLAB已成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。成为攻读学位的本科、硕士、博士生必须掌握的基本技能。在设计研究单位和工业开发部门,MATLAB被广泛的应用于研究和解决各种具体问题。 MATLAB 的发展历程和影响     MATLAB 由 MATrix 和 LABoratory 两词的前三个字母组合而成。20世纪七十年代后期,时任美国新墨西哥大学计算机科学系主任的 Cleve Moler 教授出于减轻学生编程负担的动机,为学生设计了一组调用 LINPACK 和 EISPACK 库程序的“通俗易用”的接口,形成了用 FORTRAN 编写的萌芽状态的 MATLAB 。     经几年的校际流传,在 Little 的推动下,由 Little 、 Moler 、 Steve Bangert 合作,于 1984 年成立了 MathWorks 公司,并把 MATLAB 正式推向市场。从这时起, MATLAB 的内核采用 C 语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。     MATLAB 以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的 UMIST ,瑞典的 LUND 和 SIMNON ,德国的 KEDDC )纷纷被淘汰,而改以 MATLAB 为平台加以重建。在时间进入 20 世纪九十年代的时候, MATLAB 已经成为国际控制界公认的标准计算软件。     到九十年代初期,在国际上 30 几个数学类科技应用软件中, MATLAB 在数值计算方面独占鳌头,而 Mathematica 和 Maple 则分居符号计算软件的前两名。 Mathcad则因其使用操作十分简单,不要求用户具有精深的计算机知识,对于任何具有一定数学知识的人,都可以十分容易地学会使用。当输入一个数学 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 、方程组、矩阵等,计算机将直接给出计算结果,而无须去考虑中间计算过程。因MathCad也可以进行复杂的数学计算,图形显示和文档处理,也是一种受欢迎的大众化数学工具。 MathWorks 公司于 1993 年推出 MATLAB4.0 版本,从此告别 DOS 版。 4.x 版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化: ( 1 )推出了 SIMULINK 。这是一个交互式操作的动态系统建模、仿真、分析集成环境。它的出现使人们有可能考虑许多以前不得不做简化假设的非线性因素、随机因素,从而大大提高了人们对非线性、随机动态系统的认知能力。 ( 2 )开发了与外部进行直接数据交换的组件,打通了 MATLAB 进行实时数据分析、处理和硬件开发的道路。 ( 3 )推出了符号计算工具包。 1993 年 MathWorks 公司从加拿大滑铁卢大学购得 Maple 的使用权,以 Maple 为“引擎”开发了 Symbolic Math Toolbox 1.0 。 MathWorks 公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。 ( 4 )构作了 Notebook 。 MathWorks 公司瞄准应用范围最广的 Word ,运用 DDE 和 OLE ,实现了 MATLAB 与 Word 的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。     随着时间的推移,MATLAB的功能不断扩充,版本不断升级,现今的 MATLAB 拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。 1995年推出了4.2版, 1997 年春, MATLAB5.0 版问世,紧接着是 5.1 、 5.2 ,5.X版无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,可以方便的浏览。至2001年6月推出6.1版,2002年6月推出6.5版。 从2006年开始,MathWorks公司每年进行两次例行的产品发布,时间分别在每年的3月和9月,而且,每一次发布都会包含所有的产品模块,如产品的new feature、bug fixes和新产品模块的推出。继7.0版、7.1版、7.3(MATLAB 2006b)版、7.4(R2007a)版、7.5(R2007b)版、7.6(R2008a)版。7.7(R2008b)版,7.8(R2009a)版,最新 版本为2009 年 9 月4日发布的7.9版(R2009b) MATLAB 和Simulink产品家族。 从R2008a开始,MATLAB和Simulink产品家族软件在安装后需要激活才能使用。 附件:版本发布或者更新时间   版本[4] 建造编号 发布时间 MATLAB 1.0 1984 MATALB 2 1986 MATLAB 3 1987 MATLAB 3.5 1990 MATLAB 4 1992 MATLAB 4.2c R7 1994 MATLAB 5.0 R8 1996 MATLAB 5.1 R9 1997 MATLAB 5.1.1 R9.1 1997 MATLAB 5.2 R10 1998 MATLAB 5.2.1 R10.1 1998 MATLAB 5.3 R11 1999 MATLAB 5.3.1 R11.1 1999 MATLAB 6.0 R12 2000 MATLAB 6.1 R12.1 2001 MATLAB 6.5 R13 2002 MATLAB 6.5.1 R13SP1 2003 MATLAB 6.5.2 R13SP2 2003 MATLAB 7 R14 2004 MATLAB 7.0.1 R14SP1 2004 MATLAB 7.0.4 R14SP2 2005 MATLAB 7.1 R14SP3 2005 MATLAB 7.2 R2006a 2006 MATLAB 7.3 R2006b 2006 MATLAB 7.4   R2007a 2007 MATLAB 7.5 R2007b 2007 MATLAB 7.6   R2008a 2008 MATLAB 7.7 R2008b 2008 MATLAB 7.8 R2009a 2009.3.6 MATLAB 7.9 R2009b 2009.9.4 Release 2009b 的新功能 Release 2009b 包括 MATLAB 和 Simulink的若干新功能,以及对其它 83 款产品的更新和缺陷修复。R2009b 增加了对 64-位 Mac 平台的支持。已经购买 MathWorks 软件维护服务的用户可以下载产品更新。R2009b 也提供了增强的许可中心功能。许可中心是用于激活软件以及管理许可证和用户信息的一个在线工具。 MATLAB 产品系列的新功能包括: 重新设计的帮助浏览器,支持从 MATLAB 直接访问 MATLAB Central 文件交换,及其它桌面增强功能 扩展了对 MATLAB 和 Image Processing Toolbox 中函数的多核支持,以及对 Statistics Toolbox 中函数的并行支持 Parallel Computing Toolbox 的全新界面,可访问和处理集群上的分布式数组 Image Processing Toolbox 支持处理任意大型图像文件 Mapping Toolbox 支持从网络地图服务 (WMS) 服务器搜索和检索地理数据集 在 Fixed-Point Toolbox 进行全局设置,以简化带有使用定点变量的运算 Simulink 产品系列的新功能包括: Simulink、Signal Processing Blockset 和嵌入式 MATLAB中支持用于仿真和代码生成的可变维度信号和数据 可用于管理 Simulink 和 Real-Time Workshop 设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的模型变量 可立即在Simulink 中使用的PID 控制器,以及 Simulink Control Design 的自动调优 减少了 Real-Time Workshop 的数据副本,可自定义矩阵运算以用于生成嵌入式信号处理代码 Simulink Verification and Validation 中用于管理和部署配置及自定义检查的Model Advisor Configuration Editor (模型顾问配置编辑器) 新的交互式编译报告,可分析数组大小和其它嵌入式 MATLAB 代码特性 到 1999 年底, Mathematica 也已经升到 4.0 版,它特别加强了以前欠缺的大规模数据处理能力。 Mathcad 也赶在 2000 年到来之前推出了 Mathcad 2000 ,它购买了 Maple 内核和库的部分使用权,打通了与 MATLAB 的接口,从而把其数学计算能力提高到专业层次。但是,就影响而言,至今仍然没有一个别的计算软件可与 MATLAB 匹敌。     在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把 MATLAB 作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里, MATLAB 是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。     在国际学术界, MATLAB 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到 MATLAB 的应用。 在设计研究单位和工业部门, MATLAB 被认作进行高效研究、开发的首选软件工具。如美国 National Instruments 公司信号测量、分析软件 LabVIEW , Cadence 公司信号和通信分析设计软件 SPW 等,或者直接建筑在 MATLAB 之上,或者以 MATLAB 为主要支撑。又如 HP 公司的 VXI 硬件, TM 公司的 DSP , Gage 公司的各种硬卡、仪器等都接受 MATLAB 的支持。 MATLAB-巨人肩上的工具 MATLAB被誉为“巨人肩上的工具”。 由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortran和C等那样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言。一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序,并集应用程序和图形于一便于使用的集成环境中。在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来。 MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。MATLAB自问世以来,就是以数值计算称雄。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使的MATLAB高度“向量化”。经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。美国许多大学的实验室都安装有MATLAB供学习和研究之用。在那里,MATLAB是攻读学位的大学生硕士生 博士生必须掌握的基本工具。 MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。 MATLAB5.3中包括了图形界面编辑GUI,改变了以前单一的“在指令窗通过文本形的指令进行各种操作”的状况。这可让使用者也可以象VB、VC、VJ、DELPHI等那样进行一般的可视化的程序编辑。在命令窗口(matlab command window)键入simulink,就出现(SIMULINK) 窗口。以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视原因所在。 The MathWorks, Inc.网址: http://www.mathworks.com/products/new_prod...t_features.html MATLAB的重要功能和主要组成部分 1) 功能:目前 MATLAB 产品族的主要功能为: 1、数学运算功能:MATLAB的产品家族的基础 - 矩阵运算和数值分析算法等 - 数值和符号计算 2、2D和3D图形显示功能:可以实现相应数值可视化工作 - 工程与科学绘图 - 数字图像处理 3、交互式的高级编程语言:M语言编程功能,可通过编写脚本或者函数文件实现用户自己的算法 4、工具箱函数功能:可供用户直接使用的专业工具箱函数,目前有四十多个工具箱,含盖许多科技领域,如: - 科学计算 - 控制系统的设计与仿真 - 数字信号处理 - 数字图象处理 - 通讯系统设计与仿真 - 财务与金融工程 - 生物遗传工程... 5、编译功能:可通过编译器(Compiler)将MATLAB M语言编写的函数文件编译生成函数库、可执行文件COM组件等,使MATLAB能够同其他高级编程语言(如C/C++等)进行混合应用,取长补短。 MATLAB具有用法简易、可灵活运用、程序结构强又兼具延展性的优点, 以下为其主要特色: · 功能强大的数值运算:在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用,函数的标示自然,使得问题和解答像数学式子一般简单明了,让使用者可全力发挥在解题方面,而非浪费在电脑操作上。 · 先进的资料视觉化功能: MATLAB的物件导向图形架构让使用者可执行视觉数据分析,并制作高品质的图形,完成科学性或工程性图文并茂的文章。 · 高阶但简单的程序环境: 做为一种直译式的程序语言,MATLAB让使用者在短时间内写完程序,所花的时间约为用 FORTRAN 或 C 的几分之一,而且不需要编译(compile)及联结 (link) 即能执行,同时包含了更多及更容易使用的内建功能。 · 开放及可延伸的架构: MATLAB容许使用者接触它大多数的数学原始码,监视运算法,更改现存函数,甚至加入自己的函数使 MATLAB成为使用者所须要的环境。 · 丰富的程序工具箱:MATLAB拥有多于40种的程序工具箱,这些工具箱将套装前软件的优点,与一个灵活的开放但容易操作的环境融合,提供了使用者在特别应用领域所需之许多函数。现有工具箱主要有:符号运算(利用Maple V的计算核心执行 )、影像处理、统计分析、讯号处理、神经网路、模拟分析、控制系统、即时控制、系统确认、强建控制、弧线分析、最佳化、模糊逻辑、mu分析及合成、化学计量分析等几大类别。 MATLAB 7的升级内容:MATLAB 7针对编程环境,代码效率、数据可视化、数学计算、文件I/O等方面进行了升级,包括: *开发环境 1、重新设计了桌面环境,针对多文档界面应用提供了简便的管理和访问 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,允许用户自定义桌面外观,创建常用命令的快捷方式; 2、 增强数组编辑器(Array Editor)和工作空间浏览器(Workspace Browser)功能,用于数据的显示、编辑和处理; 3、在当前目录浏览器(Current Directory Browser)工具中,增加代码效率分析、覆盖度分析等功能。; 4、M-Lint编码分析,辅助用户完成程序性能分析,提高程序执行效率; 5,增强M文件编辑器(M Editor), 支持多种格式源代码文件可视化编辑,例如C/C++, HTML,Java 等。 * 编程 1、支持创建嵌套函数(Nested Function),提供更灵活的代码模块化转化; 2、匿名函数(Anonymous Function)功能,支持在命令行或者脚本文件中创建单行函数(Single Line Function); 3、支持条件分支断点,可以在条件分支语句中进行程序中断调试; 4、模块化注释,支持为代码段注释。 * 数学 1、支持整数算术运算; 2、支持单精度数据类型运算,包括基本算术运算、线性代数、FFT等; 3、使用更强大的计算算法包Qhull 2002.1,提供更丰富的算法支持; 4、Linsolve函数用于处理线性代数方程求解; 5、ODE求解器能够处理隐性微分方程组以及多点边界问题; * 图形和3D可视化 1、新图形窗口界面; 2、直接从图形窗体生成M代码,可以完成用户自定义绘图; 3、增强图形窗体注释; 4、数据侦测工具(Data Exploration Tools),提供丰富的数据观测手段; 5、自定义图形对象,提供丰富的图形显示功能; 6、GUIDE新增对用户界面和ActiveX控件支持; 7、增强句柄图形对象支持完整地TeX和LaTeX字符集; * 文件I/O和外部接口 1、新增文件I/O函数,支持读取任意格式文本数据文件,并且支持写入Excel和HDF5格式数据文件; 2、具有压缩功能的 MAT文件格式,支持快速数据文件I/O能力; 3、javaaddpath函数,无需重新启动MATLAB就可完成Java类的加载、删除等功能; 4、支持COM、服务器事件以及VBS; 5、支持SOAP,使用网络服务; 6、FTP对象,直接访问FTP服务器; 7、支持Unicode编码格式,增强MAT文件字符集; * 性能与系统平台支持 1、JIT加速器支持所有数值数据类型; 2、Windows XP系统下支持3GB内存访问。 二) MATLAB的主要组成部分:MATLAB系统由5个主要的部分构成: (1)开发环境(development Environment):为MATLAB用户或程序编制员提供的一套应用工具和设施。由一组图形化用户接口工具和组件集成:包括MATLAB桌面、命令窗口、命令历史窗口、编辑调试窗口及帮助信息、工作空间、文件和搜索路径等浏览器; (2) MATLAB数学函数库(Math Function Library):数学和分析功能在MATLAB工具箱中被组织成8个文件夹。 elmat 初步矩阵,和矩阵操作。 elfun 初步的数学函数。求和、正弦、余弦和复数运算等 specfun 特殊的数学函数。矩阵求逆、矩阵特征值、贝塞尔函数等; matfun 矩阵函数-用数字表示的线性代数。 atafun 数据分析和傅立叶变换。 polyfun 插值,多项式。 funfun 功能函数。 sparfun 稀疏矩阵。 (3) MATLAB 语言:(MATLAB Language)一种高级编程语言(高阶的矩阵/数组语言),包括控制流的描述、函数、数据结构、输入输出及面对对象编程; (4) 句柄图形:(Handle Graphics) MATLAB制图系统具有2维、三维的数据可视化,图象处理,动画片制作和表示图形功能。可以对各种图形对象进行更为细腻的修饰和控制。允许你建造完整的图形用户界面(GUI),以及建立完整的图形界面的应用程序。制图法功能在MATLAB工具箱中被组织成5个文件夹:      graph2d 二维数图表。      graph3d 三维图表。      specgraph 专业化图表。      graphics 制图法。      uitools 图形用户界面工具。 (5) 应用程序接口:(Applied Function Interface) MATLAB的应用程序接口允许用户使用C或FORTRAN语言编写程序与MATLAB连接。 MATLAB工具箱(Toolbox);(表 1—2) 二.MATLAB 的安装:与一般光盘软件的安装相同, 略 三.MATLAB 的系统开发环境(System Developing Environment) 1. 操作桌面(Operating Desktop) (1)桌面布局:6个窗口 (图示、操作演示) *命令窗口 (Commend Window) *工作空间窗口(Workspace) *当前目录浏览器(Current Directory )(Current folder 7.9版) *命令历史窗口 ( Commend History ) *启动平台 (Launch Pad)6.x版 *帮助窗口(Help) *M文件优化器(Profiler) Profiler for Improving Performance:One way to improve the performance of your M-files is using profiling tools. MATLAB provides the M-file Profiler, a graphical user interface that is based on the results returned by the profile function. Use the Profiler to help you determine where you can modify your code to make performance improvements. 窗口的切换、放大与关闭。(switching, Amplification, tun-off) 6.0版Desktop菜单中的desktop layout菜单中提供的6种可选布局: *Default *Command Window *Simple *Short History *Tall History *Five Panel 7.0版Desktop菜单中的desktop layout菜单中提供的4种可选布局: *Default *Command Window Only * History and Command Window *All Tabbed All but command window minimized(7.9版) (2).菜单和工具栏;(Menu and toolbar) 操作桌面上有9个菜单(表1—3)和带有10个快捷按钮的工具栏组,(图示、操作演示) (3).改变桌面设置:(Setting) File 菜单中Preference对话框中设置(图示、操作演示) 2. 命令窗口:(Command window)MATLAB的主要交互窗口。用于输入MATLAB 命令、函数、数组、表达式等信息,并显示图形以外的所有计算结果。 例如从键盘输入矩阵 A=[1 2 3; 4 5 6; 7 8 9] 按Enter 键后屏幕立即显示结果 A= 1 2 3 4 5 6 7 8 9 命令窗口可作为一个多功能高级计算器,如要计算18+(5sinπ/6)/2+cosπ/6 只须按MATLAB格式要求键入; 18+5*sin(pi/6)/(2+cos(pi/6)),然后按Enter键既可在窗口内显示出计算结果: ans= 18.8723 可利用↑键回调命令行,任意改动公式中的数据并重新计算。(例) 还可在命令窗口输入最后一次输入命令的开头字符或字符串,然后用↑键调出该命令行。 MATLAB是标准的Windows界面,可利用菜单中的命令完成对工作窗口的操作。其命令行功能键和快捷键与Windows 的一般应用程序相似,(自学) 3.工作空间窗口:(Workspace Window) 用于储存各种变量和结果的空间,显示变量的名称、大小、字节数及数据类型,对变量进行观察、编辑、保存和删除。(图示、操作演示)。临时变量不占空间, 为了对变量的内容进行观察、编辑与修改,可以用三种方法打开内存数组编辑器。*双击变量名;*选择该窗口工具栏上的打开图标;*鼠标指向变量名,点击鼠标右键,弹出选择菜单,然后选项操作。(示例) 欲查看工作空间的情况,可以在命令窗口键入命令whos(显示存在工作空间全部变量的名称、大小、数据类型等信息)或命令who(只显示变量名) 4.当前目录浏览器:(Current Directory) 用于显示及设置当前工作目录,同时显示当前工作目录下的文件名、文件类型及目录的修改时间等信息。只有在当前目录或搜索路径下的文件及函数可以被运行或调用。(图示、操作演示) 设置当前目录可以在浏览器窗口左上角的输入栏中直接输入,或点击浏览器下拉按钮进行选择。还可用cd命令在命令窗口设置当前目录,如: cd c:\mydir 可将c盘上的mydir目录设为当前工作目录。 (5).命令历史窗口:(Command History) 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 已运行过的MATLAB命令历史,包括已运行过的命令、函数、表达式等信息,可进行命令历史的查找、检查等工作,也可以在该窗口中进行命令复制与重运行。(图示、操作演示) 6.启动平台:(Launch Pad)(6.0版) 帮助用户方便地打开和调用MATLAB 的各种程序、函数和帮助文件。 平台列出了系统中安装的所有的MATLAB产品的目录,可以通过双击来启动相应的选项。7.0版取消了这个窗口,事实上Help工具完全具备它的功能。(图示、操作演示) 7.MATLAB 的搜索路径:(Searching Path) MATLAB定义的一系列文件路径的组合,缺省状态下包括当前路径和已安装的全部工具箱的路径。(图示、操作演示) 当在命令窗口输入一个字符串时,MATLAB按下列顺序开始搜索: (1) 在工作空间中搜索是否有以该字符串为变量名的变量,有则返回该变量的值; (2) 搜索是否有同名的MATLAB内部函数,如果有,执行该内部函数; (3) 在当前目录中查找与该字符串同名的M文件,如果有,执行该文件; (4) 在搜索目录中查找与该字符串同名的M文件,如果有,执行该文件; 如果在搜索目录中存在多个同名函数,则只执行搜索路径中的第一个函数,其他函数不再执行。 搜索目录的设置通过选择主菜单Set Path菜单项进行。 用Add Folder…按钮可以将某一目录加入搜索路径,选择Add with Subfolder…按钮可将选中目录的子目录也包括在搜索路径中。 8.内存数组编辑器:(Array Editor) 提供对数值型或字符型二维数组的显示和编辑功能,对其他数据类型都不能编辑。通过工作空间窗口打开所选的变量时,该编辑器启动。(图示、操作演示) 9.帮助浏览器:(Help Browser) (1)帮助浏览器:提供方便快捷的帮助信息获取途径和图文并茂的帮助内容,MATLAB7.0是通过勾选Desktop菜单中的Help选项打开一个独立的交互式帮助浏览器。 (2)help 命令:在命令窗口输入help命令,也是MATLAB寻找在线帮助的一种方便而快捷的方式。(图示、操作演示) 例 1. help (列出主要的帮助主题) HELP topics: matlab\general - General purpose commands. matlab\ops - Operators and special characters. matlab\lang - Programming language constructs. matlab\elmat - Elementary matrices and matrix manipulation. matlab\elfun - Elementary math functions. matlab\specfun - Specialized math functions. matlab\matfun - Matrix functions - numerical linear algebra. matlab\datafun - Data analysis and Fourier transforms. matlab\audio - Audio support. matlab\polyfun - Interpolation and polynomials. matlab\funfun - Function functions and ODE solvers. matlab\sparfun - Sparse matrices. matlab\graph2d - Two dimensional graphs. matlab\graph3d - Three dimensional graphs. matlab\specgraph - Specialized graphs…. 例 2. help exp (列出指定主题下的函数说明) EXP Exponential. EXP(X) is the exponential of the elements of X, e to the X. For complex Z=X+i*Y, EXP(Z) = EXP(X)*(COS(Y)+i*SIN(Y)). See also LOG, LOG10, EXPM, EXPINT. Overloaded methods help sym/exp.m help fints/exp.m help demtseries/exp.m (3)lookfor 命令:(lookfor commend) 可以根据用户提供的完整或不完整的关键词,搜索出一组与之相关的命令或函数。(图示、操作演示) 例:lookfor integral ELLIPKE Complete elliptic integral. EXPINT Exponential integral function. DBLQUAD Numerically evaluate double integral. QUAD Numerically evaluate integral, adaptive Simpson quadrature. QUAD8 Numerically evaluate integral, higher order method. QUADL Numerically evaluate integral, adaptive Lobatto quadrature. COSINT Cosine integral function. SININT Sine integral function. ASSEMA Assembles area integral contributions in a PDE problem. COSINT Cosine integral function. FOURIER Fourier integral transform. IFOURIER Inverse Fourier integral transform. SININT Sine integral function. BLKPIDCON The output of the block is the sum of proportional, integral and (4)模糊查询:(fuzzy Inquiry) 用户只须输入命令的前几个字母,然后键入Tab键 MATLAB 就会列出所有以这个字母开始的命令。(图示、操作演示) 例: 在命令窗口键入plot 然后按Tab键,可得各种以plot为字头的命令: plot plotbr plotes plotmap plotperf plottr plot3 plotchar plotfa plotmatrix plotpv plotv plot3m ploteach plotfis plotmf plotscale plotvec plotall plotedit plotfrsp plotnic plotsm plotyy plotbintree plotep plotlr plotnyq plotsom plotbode ploterr plotm plotpc plotstep (5)帮助台:(doc)帮助台比帮助命令及帮助窗口提供更多的帮助信息。键入命令helpdesk可进入帮助台,可以利用浏览器的功能浏览帮助信息。 (6)在线帮助页:(doc)命令doc后加关键字,MATLAB会自动定位到相关页码,在线帮助页包括所有的字体、图形和图像都可以直接打印。 *演示:(Demo)交互式界面引导的内置演示程序,运行这些程序可以对照屏幕上的显示仔细的研究实现演示的有关M文件,其独特的示范作用是书籍难以替代的。演示方法:1、指令窗口上的Demos指令 2、菜单栏中Demos菜单 四.MATLAB的基本操作 1. 简单矩阵的建立(matrix setting) Matrix: A kind of special type of data structure, most function and operation of MATLAB were based on it. It is a set of numbers arranged using a rectangular grid of rows and columns. *Scalar: It is just a single number and it can be considered as a special matrix with one row and one column. *Vector: It is a series of numbers arranged in a row or a column; Also we can refer to the vector as a special matrix with one row or one column. It may be called a row vector or a column vector. MATLAB以矩阵为基本运算对象,标量可看作1×1的矩阵,矢量看作n×1或1×n的矩阵。 输入方式:(Input Mode) (1)以直接列出元素的形式输入:(simply initializing matrices by the method to explicitly lists the values )把矩阵元素直接排列到方括号[ ]中,每行内的元素用逗号或空格分开,行与行之间用分号隔开。 例: a=[1 2 3;2 4 6;8 3 5] 或 a=[1, 2, 3;2, 4 ,6;8, 3 ,5] 大矩阵可分行输入: a=[1 2 3 2 4 6 8 3 5] (2). 通过语句和函数产生:(Creating a new matrix from a existing matrix throw MATLAB language or functions) 对于已经存在的矩阵,可用函数或表达式产生新的矩阵。 例如: 矩阵 a和x已存在,利用 y=sin(x) 和c=a+0.1*(1+a/2) 命令将产生新矩阵y和c。 利用内部语句和函数可以快速产生一些特别有用的工具矩阵,如全0 阵,全 1阵,单位阵,随机阵等。 (3).在m文件中创建矩阵:(Creating a matrix within the M file)通过建立MATLAB的M文件可完成矩阵的输入,如建立B.m的文件,内容为: B=[3 4 2;1 3 5;6 4 3] 或 B=[3 4 2 1 3 5 6 4 3] 则在命令窗口中使用B命令语句可以调用B矩阵。 (4) 从外部的数据文件中装入:(Read the Matrix from external data file)利用 load 或 fread 命令可以读取MATLAB早期版本产生的矩阵,也可读取有其他应用程序产生的数据(或矩阵)。 2. 矩阵元素(Element of matrix: Any kind of expression can be used as a matrix element) 可以用任何形式的表达式来充当矩阵元素,如: x=[-1.3 sqrt(3) (1+2+3)*4/5] 将得到矩阵: x= -1.3000 1.7321 4.8000 可以定义或修改矩阵中某一元素,如操作: x=[-1.3 sqrt(3) (1+2+3)*4/5] x(5)=abs(x(1)) 得一个新矩阵 x= -1.3000 1.7321 4.8000 0 1.3000 可以用小矩阵构成大矩阵, 如: a=[1 2 3;4 5 6;7 8 9]; c=[a;[10,11,12]] 结果为: c= 1 2 3 4 5 6 7 8 9 10 11 12 或a=[1 2 3;4 5 6;7 8 9]; r=[ 10 11 12 ]; c=[ a;r ] 可得同样矩阵 c= 1 2 3 4 5 6 7 8 9 10 11 12 可使用”:”(colon) 从大矩阵中抽取小矩阵, (withdraw a small matrix from a big matrix)如: a=[1 2 3;4 5 6;7 8 9]; r=[ 10 11 12 ]; c=[ a;r ] d=c(1:3,:) 意为抽取一到三行的各列, 结果为: d= 1 2 3 4 5 6 7 8 9 e=c(:,1:2) 意为抽取一到二列的各行, 结果为: 1 2 4 5 7 8 10 11 3. 语句与变量(Statement and variable) MATLAB 语句的常用格式: 变量=表达式(;) (variable=expression(;)) 或简化为: 表达式(;) 表达式可以由运算符(Operator)、特殊字符(special character)、函数名(function name)、变量名(variable name) 等组成,表达式的结果为一矩阵,它赋给左边的变量。如省略变量名和“=”,则自动产生一个名为ans的变量, 如: 1900/81 结果为: ans= 并显示在屏幕上,如语句以分号结束,则结果不显示, 如: p=a*a; 只完成运算,但不显示结果。 表达式较长时可利用续行符“. . .”, 如: s=1-1/2+1/3-1/4+1/5-1/6+1/7-. . . 1/8+1/9-1/10+1/11-1/12; 计算结果为: 0.6532 注:续行号前不应是数字,数字后应为运算符、空格或加一个点号。 MATLAB变量:变量名必须用字母打头,之后可以是任何字母、下划线或 者数字,变量名最多不超过31个字符,31个字符后的字符将被忽略。 4. 复数和复数矩阵 (Complex and complex matrix) 复数用特殊字符i或j 表示。i=sqrt(-1), 其值在工作空间显示为 0+1.0000i. 例: 输入 z=3+4i 或z=3+4j 结果一样。 MATLAB 中复数有下面的语句生成办法: z=a+b*i 或 z=r*exp(i*θ) 其中r为复数的模,θ为复数辐角的弧度数。 复数的两种输入方法: (1) a=[1 2;3 4]+i*[5 6;7 8] (2) a=[1+5i 2+6i; 3+7i 4+8i] 结果相同: a = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i 注:(1) 当复数的虚部(image)为一个确定的数(而不是变量或矩阵)时,可省略“*”,如1+2*i可写成1+2i, 但a+b*i 不能写成 a+bi, [1 2]+[3 4]*i不能写成 [1 2] + [3 4]i (2) 当复数作为矩阵元素时,复数内不能留有空格,如 1 +5i, MATLAB中任何矩阵的元素内部都不能留有空格,否则会被当作两个元素处理而出错。 (3) 如在程序设计中i 、j 被定义为其他变量则应定义另一新的复数单位。如 i1。 5. 永久变量:(permanent variable)系统本身在启动时定义的变量,驻留在工作空间中,它们是: ans: (stores expression value)系统默认的变量名 eps:(represents floating-point precision)容差变量,定义为0到最近浮点数的距离。在PC机上等于2-52,即精确到2.22×10-16; pi :(represents the value π) 圆周率的近似值3.141565358979 Inf 或inf: (represents the value ∞)正无穷大,定义为(1/0) NaN:(represents the value Not-a-Number) 非数(Not a number), Inf/Inf或0/0运算产生,表示不定值。 i, j : 虚数单位,定义i=-11/2 , j=-11/2 6. 数和算术表达式(Number and arithmetic expression) MATLAB采用10进制惯例, 表示10 的幂次用符号e或E: 3 -99 0.001 9.456 1.3e-3 4.5E21 数值的相对精度是eps,即大约保持16位有效数字。 MATLAB的算数运算符号(Arithmetic Operator): + 加 addition , - 减 subtraction , * 乘 multiplication , \ 左除 left division , / 右除 right division, ^ 幂 exponentiation 对于标量,两种除法运算的结果相同,对于矩阵两种除法表示两种不同的除数矩阵和被除数矩阵的关系。 7. 数据的显示格式(The display format of number) MATLAB的数据显示格式由format命令来控制,他只影响结果在屏幕上的显示,不影响其计算与存储。MATLAB总是以双精度执行所有的运算。 数据的显示格式。 有十种数据的显示格式可供选择: 格 式 对应结果 命令 含义 4/3 1.2345e-6 format short format long format short e format long e format short g format long g format hex format + format rat format bank 短格式 长格式 短格式e方式 长格式e方式 短格式g方式 长格式g方式 16进制格式 +格式 分数格式 银行格式 1.3333 1.33333333333333 1.3333e+000 1.33333333333333e+000 1.3333 1.33333333333333 3ff5555555555555 + 4/3 1.33 0.0000 0.00000123450000 1.2345e-006 1.234500000000000e-006 1.2345e-006 1.234500000000000e-006 3eb4b6231abfd271 + 1/810045 0.00 对于长短格式,如果矩阵的最大元素比1000大或比0.001小,则输出时将自动加入比例因子,如: x=[12345 0.0009] x = 1.0e+004 * 1.2345 0.0000 即 x=104*[1.2345 0.0000],104为比例因子 MATLAB操作桌面的file菜单中打开preferences窗口,选择命令窗口界面,就可以方便地在cammend window对话框中进行格式选择。 第二章 MATLAB 的基本数学功能 Chapter two: fundamental Math function of MATLAB . 1. 算术运算(Arithmetic Computation) MATLAB 提供的两种运算方式: (1) 普通的数组运算方式:(Array computation) 在数组中对应元素之间进行运算; (2) 矩阵运算方式:(matrix computations) 将标量当作1×1阶矩阵,一维数组当作一行或一列的矢量(即1×n阶或 n×1阶的矩阵),二维数组当作m×n阶矩阵,然后按照矩阵的运算规则进行运算。 *二者输入形式和书写方法相同,差别仅在于使用不同的运算符号,执行不同的计算过程,数组的运算是对应元素之间的运算,而矩阵运算是根据矩阵的运算规则进行。 1. 加、减运算(addition and subtraction) 矩阵与数组的加减运算没有区别,运算符均为“+”、“-”,运算方法相同,但两个运算对象必须是同阶矩阵,否则将给出错误信息。如下例: a=[1 2 3;4 5 6;7 8 9]; b=[1 3 5]; a+b 运行结果给出错误信息: ??? Error using ==>± Matrix dimensions must agree. 但标量,即1×1阶矩阵可以和其他不同维数的矩阵进行加减运算,如:a=[1 2 3;4 5 6;7 8 9]; a+5 ans = 6 7 8 9 10 11 12 12 14 2. 乘除运算(Multiplication and division) 矩阵在进行乘除运算时与通常的运算符号相同(*, /, \ ),而数组在进行乘除运算时要在通常的符号前加“.”,如:“.* ” 和“./ ” (或 “.\ ”) (1) 矩阵乘法:(Matrix multiplication) 条件:两矩阵中前一矩阵的列数与后一矩阵的行数相同, 如 x=[1 2 ; 3 4]; y=[5 6 ; 7 8]; x*y ans = 19 22 43 50 也可以实现两个相同维数矢量的内积(点乘,dot product),如: a=[-1 0 2 ]‘ % (输入行矢量转置为列矢量,等同于a=[-1;0;2]) b=[-2 -1 1]‘ a‘*b b‘*a a = -1 0 2 b = -2 -1 1 ans = 4 ans = 4 MATLAB计算点乘(dot product)和叉乘(cross product)有专门的命令,用dot(a,b)计算矢量a和b的点乘,用cross(a,b) 计算叉乘。 矩阵可以和标量相乘,标量可以是乘数也可以是被乘数,都是将矩阵中的每一个元素与标量相乘。如: x=[-1 0 2]; pi*x ans = -3.1416 0 6.2832 (2) 数组的乘法 (Array multiplication) 条件:a,b两数组必须有相同的维数,则a.*b 表示a和b中对应元素之间相乘,即z(i,j)=x(i,j)*y(i,j).如: x=[1 2 3]; y=[4 5 6]; z=x.*y z = 4 10 18 (3) 矩阵除法 (Matrix division) 条件:a矩阵是非奇异方阵,则a\b(左除)和b/a(右除)都可以实现。a\b等效于a矩阵的逆左乘b矩阵,即a\b=inv(a)*b, b/a等效于a矩阵的逆右乘b矩阵,即b/a=b*inv(a). 通常x=a\b 是a*x=b 的解,x=b/a 是x*a=b的解。一般a\ b≠b/a, 右除与左除的关系为:(b/a)’=(a’\b’),如; a=rand(3) b=rand(3) c=a\b d=b/a w=(b/a)' t=a'\b' a = 0.6038 0.0153 0.9318 0.2722 0.7468 0.4660 0.1988 0.4451 0.4186 b = 0.8462 0.6721 0.6813 0.5252 0.8381 0.3795 0.2026 0.0196 0.8318 c = 4.3420 10.5808 -9.1715 0.3128 1.1052 -0.3169 -1.9105 -6.1529 6.6792 d = 1.4864 5.5604 -7.8702 0.7162 4.5085 -5.7059 -0.0482 -3.6273 6.1317 w = 1.4864 0.7162 -0.0482 5.5604 4.5085 -3.6273 -7.8702 -5.7059 6.1317 t = 1.4864 0.7162 -0.0482 5.5604 4.5085 -3.6273 -7.8702 -5.7059 6.1317 (4) 数组的除法(Array division) 条件:a与b必须具有相同的维数。符号“. \ ”或 “. / ”,运算结果相同,a.\b 表示b中的元素分别除以a中的对应元素,即z(i,j)=x(i,j)\y(i,j)=y(i,j)/x(i,j)。 如: x=[1 2 3]; y=[4 5 6]; z=x.\y z = 4.0000 2.5000 2.0000 3. 乘方(Power) (1) 矩阵的乘方(Matrix power) 条件:在a^p 中a, p不可都是矩阵,必须一个是标量,一个是方阵。 a^p 意思是a的p次方。 *A是一个方阵,p是一个标量,且p 是大于1 的整数,则a的p次幂即为a自乘p次。 *如p是不为整数的标量时, a^p=V*D.^p/V 其中D为矩阵a的特征值矩阵,V为对应的特征矢量阵,可用eig函数求出D和V, [V,D]=eig(a). *当p 是方阵而a是标量时,a^p=V*a.^D/V, 其中[V,D]=eig(p). (2) 数组的乘方(Array power) 符号 “.^ ” 条件:在底与指数均为数组的情况下,要求他们的维数必须相同。 *当底和指数为同样大小的数组时,x.^y 为对应的元素做乘方运算。如: x=[1 2 3]; y=[4 5 6]; z=x.^y z = 1 32 729 这时执行的实际运算为: z=x.^y=[1 2 3].^[4 5 6]=[1^4 2^5 3^6]=[1 32 729] *若指数是标量,执行的运算是底的每一个元素执相同幂次的运算。既z(i,j)=x(i,j)^2 如: x=[1 2 3]; z=x.^2 得到结果为: z= 1 4 9 这时执行的运算为: z=[1 2 3].^2=[1^2 2^2 3^2]=[1 4 9] *若底是一个标量,指数是一个数组,执行的运算是用指数数组的每个元素对底进行乘方运算,即: z(i,j)=2^x(i,j),形成新的数组。 如: x=[1 2 3]; z=2.^x z = 2 4 8 这时执行的运算为: z=2.^x=2.^[1 2 3]=[2^1 2^2 2^3] 4. 转置:(Transpose) 行列转置,符号 “ ‘ ” 如;计算矩阵a的转置: a=[1 2 3; 4 5 6; 7 8 9 ]; b=a’ b = 1 4 7 2 5 8 3 6 9 也可直接对矢量或矩阵进行转置运算; [-1 0 2]’ ans = -1 0 2 如z是复数矩阵,则z’ 是它的复数共轭.转置(Complex conjugate transpose ),若要进行非共轭转置运算,可使用z.’ 或conj(z’) 求得。 例; z=[1+2i 3+4i]; z’ ans = 1.0000 - 2.0000i 3.0000 - 4.0000i z=[1+2i 3+4i]; z.’ ans = 1.0000 + 2.0000i 3.0000 + 4.0000i z=[1+2i 3+4i]; conj(z’) ans = 1.0000 + 2.0000i 3.0000 + 4.0000i CONJ Complex conjugate. CONJ(X) is the complex conjugate of X. For a complex X, CONJ(X) = REAL(X) - i*IMAG(X). 二. 数学函数和矩阵函数( Mathematic function and matrix function) MATLAB提供的数学函数主要有基本函数和特殊函数两部分。 1. 数学函数(Math function) (a). 基本函数:(Elementary function)三角函数(Trigonometric Function)、指数函数(Exponent function)、复数函数(Complex Function)、取整和求余函数(round and remain function)。(常用基本函数见函数表,要求课后阅读、记忆) 例: a=[1 2 3; 4 5 6] b=fix(pi*a) %朝零方向取整 c=cos(pi*b) pi*b a = 1 2 3 4 5 6 b = 3 6 9 12 15 18 c = -1 1 -1 1 -1 1 说明:(1) 三角函数按弧度计算 (2)除后取模mod(x,y)与y符号相同,除后取余数rem(x,y) 与x符号相同,当x与y符号相同时 ,mod(x,y)等于rem(x,y). 例: x=[11 25 31]; y=[4 5 6]; M=mod(x,y) R=rem(x,y) M = 3 0 1 R = 3 0 1 x=[-11 25 -31]; y=[4 5 6]; M=mod(x,y) R=rem(x,y) M = 1 0 5 R = -3 0 -1 MOD Modulus after division. MOD(x,y) is x - n.*y where n = floor(x./y) if y ~= 0. (Round towards minus infinity.) If y is not an integer and the quotient x./y is within round off error of an integer, then n is that integer. By convention, MOD(x,0) is x. The input x and y must be real arrays of the same size, or real scalars. The statement "x and y are congruent mod m" means mod(x,m) == mod(y,m). REM Remainder after division. REM(x,y) is x - n.*y where n = fix(x./y) if y ~= 0. (Round towards zero). If y is not an integer and the quotient x./y is within roundoff error of an integer,then n is that integer. By convention, REM(x,0) is NaN. The input x and y must be real arrays of the same size, or real scalars. REM(x,y) has the same sign as x while MOD(x,y) has the same sign as y. REM(x,y) and MOD(x,y) are equal if x and y have the same sign, but differ by y if x and y have different signs. (b) 特殊函数:(Special function)特殊数学函数(special mathematics function)、数理函数(Mathematic analysis function)、坐标变换(Coordinates transformation function)(表2-2) 2. 矩阵函数:(Matrix function) 矩阵分析(Matrix Analysis)、线性方程组(linear system of equations)、特征值和特征矢量(Eigenvalues and eigenvectors.)、矩阵函数(Matrix function)、因式分解(Factor analysis) 等矩阵函数(表2-3)。 有些矩阵函数与数学函数名称相似,区别在于矩阵函数名称后有m字符。 例: a=[1 4; 9 16]; r1=sqrt(a) r2=sqrtm(a) r1 = 1 2 3 4 r2 = 0.4662 + 0.9359i 0.8860 - 0.2189i 1.9935 - 0.4924i 3.7888 + 0.1152i SQRT Square root. SQRT(X) is the square root of the elements of X. Complex results are produced if X is not positive. SQRTM Matrix square root. X = SQRTM(A) is the principal square root of the matrix A, i.e. X*X = A. X is the unique square root for which every eigenvalue has nonnegative real part. If A has any eigenvalues with negative real parts then a complex result is produced. If A is singular then A may not have a square root. A warning is printed if exact singularity is detected. 三. 关系运算与逻辑运算(Relational calculus and Logical operation) 1.关系运算:(Relational calculus) 条件:对于两个矩阵的关系运算,两边的矩阵必须具有同样尺寸。 关系运算符:(Relational operator) ﹤ 小于(less than)、﹤=小于等于(less than or equal to)、﹥大于(greater than)、﹥=大于等于(greater than or equal to)、== 等于(equal to)、~=不等于(not equal to ,NE)。 例:标量 2+2~=4 ans = 0 矩阵: a=[0 -1 2]; b=[-3 1 2]; ab ans = 1 0 0 a>=b ans = 1 0 1 a==b ans = 0 0 1 a~=b ans = 1 1 0 在程序的流程控制中,关系运算符通常if, while, for, switch 等控制命令使用。 2. 逻辑运算(Logical operation) 逻辑运算符:(Logical operator) & 与(AND), | 或(OR), ~ 非(NOT) 条件:对于两个矩阵的逻辑运算,两边的矩阵必须具有同样尺寸。 “~” 是一元算符,当a为零时,返回信息为1,为非零时,返回信息为 0。# p|(~p) 返回值为 1, # p&(~p) 返回值为0 例:a=[1 2 3; 4 5 6]; b=[-1 0 0; 0 0.5 0]; a&b ans = 1 0 0 0 1 0 a|b ans = 1 1 1 1 1 1 ~b ans = 0 1 1 1 0 1 3.关系函数和逻辑函数 (Relational function and Logical function) (表2—6) 例: a=magic(6) %建立6阶魔术矩阵,元素由1~n2组成 p=(rem(a,3)==0) %对a求余,有余数置0,无余数置1 format +; p %以format +格式给出p的压缩格式 format %将显示格式转换为缺省的短格式 y=a; i=find(y>10); %找出y矩阵中大于10的元素的位置i y(i)=10*ones(1) % 用10代替y中所有大于10 的元素 a = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 p = 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 p = + + + + + + + + + + + + y = 10 1 6 10 10 10 3 10 7 10 10 10 10 9 2 10 10 10 8 10 10 10 10 10 10 5 10 10 10 10 4 10 10 10 10 10 四. 基本字符处理功能(Elementary Symbolic treatment function) 1. 字符数组的建立(Setting of Symbolic array) (1)字符串(string of character)就是ASCII值得数值数组(Character arry),MATLAB 中每个字符都有相应的ASCII码数值进行存储,输入时所有字符串都用单引号界定后输入或赋值,yesinput除外。 例如: s1=’He llo’ s1 = Hello 字符串中空格也是字符,上例为1×5阶矩阵: s1=’He llo’ size(s1) ans = 1 5 (一行五列) (2)利用class 函数和 ischar函数可以判别变量是否为字符串,如: s1=’He llo’ class(s1) ans = char s1=’He llo’ ischar(s1) ans = 1 (3) 可以用方括号(square bracket)将字符串合并成更大的串,例如: s=[s1,’World’] 得结果: s = Hello World (4) 可以从一个字符串中提取子串(sub string),例如: s=[s1,’World’] ss=s(7:11) ss = World (5) 可以将字符串中的字符倒序排列。例如: a=’a b c d’ a = a b c d b=a(end:-1:1) b= d c b a (6) 建立二维数组(two dimensional array)一样可以直接输入,只须加方括号,并用分号分行,每行字数必须一致,不足处可用空格补充。 例如: str=[‘name’;’type’;’size’] str = name type size 还可用str2mat函数把字符串转化为字符数组,这种方法允许用不同长度的字符串。例如: s2=str2mat(‘abc’,’abcde’) s2 = abc abcde >> 2. 字符数组的运算(Operation of symbolic array) (1)字符以ASCⅡ码存储,用double 命令可以查出字符的ASCⅡ码值。 如运行double(s1) 得s1码值为: ans = 72 101 108 108 111 (2) 用char命令可以实现ASCⅡ码向字符的转换.如: 执行char([65 66 67 68] 得: ans = ABCD (3) ischar函数用来检测变量是否为字符变量,返回1 为肯定,返回0 为否定。 (4). strcmp 函数具有比较字符串的功能,如执行strcmp(str1,str2), 返回1 表示str1=str2, 返回0 表示str1≠str2. (5). 用eval 函数将字符串转换为宏功能。eval(t)就是运行包含在t中的内容。 例如: 用eval函数产生5阶的Hilbert矩阵。 n=5; t=’1/(i+j-1)’; %字符串t a=zeros(n); for i= 1:n for j=1:n a (i , j) = eval(t); %将字符串转变为宏功能,运行包含在t %中的内容 end end a a = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 常用字符串函数(表2—7) 五. 建立特殊数组(矩阵)(setting a special array, matrix) 1. 标准数组(或矩阵)函数:(Standard array function) MATLAB提供了一些可以用于辅助编程或运算的一些基本数组或矩阵,主要有:全0数组:zeros,全1数组:ones,单位矩阵:eye, 均匀分布的随机数组:rand, 正态分布的随机数组:randn,对角矩阵:diag, 魔术矩阵magic, pascal矩阵:pascal. 2. 由小数组建立大数组:(generating a big array by using small array) 大数组可由方括号中的小数组建立,如有矩阵 a=[1 2 3; 4 5 6 ; 7 8 9] %可利用它建立一个大矩阵: c=[a eye(size(a)); ones(size(a)) a^2] a = 1 2 3 4 5 6 7 8 9 c = 1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 1 1 1 30 36 42 1 1 1 66 81 96 1 1 1 102 126 150 也可以写成: d=[a zeros(3,2); ones(2,3) eye(2,2)] d = 1 2 3 0 0 4 5 6 0 0 7 8 9 0 0 1 1 1 1 0 1 1 1 0 1 注意:在同一行的各个小数组要有相同的行数,在同一列上的小数组要有相同的列数。 3. 冒号“:” 的使用(The using of colon) (1) 产生一维数组(Initialize a one dimensional array),如: x=1:5 x = 1 2 3 4 5 产生一个1 到5单位增量的一维数组 可产生任意增量的一维数组,如: y=0:pi/4:pi y = 0 0.7854 1.5708 2.3562 3.1416 增量为:π/4=0.7854 z=6:-1:1 z = 6 5 4 3 2 1 增量为-1 (2) 用来产生简易的表格;(Produce a simple list)如为产生一个纵向表格形式,可先分别计算产生两个一维数组,在进行转置形成列向数组。 x=(0:0.2:2); y=exp(-x).*sin(x); [x’,y’] ans = 0 0 0.2000 0.1627 0.4000 0.2610 0.6000 0.3099 0.8000 0.3223 1.0000 0.3096 1.2000 0.2807 1.4000 0.2430 1.6000 0.2018 1.8000 0.1610 2.0000 0.1231 4.下标的使用(The using of subscript) (1) 元素定位:(locate a element)单个的数组元素的位置可在括号中用下标来表达,如: a=[1 2 3 4 5 6 7 8 9 ] 其中a(3,3)=9 a(1,3)=3, a(3,1)=7, 可用带下表的元素表达式进行运算和赋值产生新元素,如:若执行a(3,3)=a(1,3)+a(3,1) 则有: a =[1 2 3 4 5 6 7 8 10] 下标可以是一个一维数组。对于矩阵来说,利用下标可以调动某些元素构成新的子数组。设b是一个10×10阶数组,则b(1:5,3)指b中的第1行到第5行处于第三列的元素组成5×1阶子数组。 B(1:5, 7:10) %指前5行处于后四列中的元素构成5×4阶的子数组。 B(: , [3,5,10])=c(:, 1:3) 表示将C数组的前三列赋值给b 数组的第三、第五和第十列。 A(:,n:-1:1) 即为由原来a数组中取n至1 负增长的列元素组成一个新的数组,其行数为a数组的行数,列数为n 。 例 : a=[1 2 3; 4 5 6; 7 8 9]; a = 1 2 3 4 5 6 7 8 9 v=1:3 w=[3 1 2], 计算a(v,w) ans = 3 1 2 6 4 5 9 7 8 若 w=[2 1 1], 计算a(v,w) ans = 2 1 1 5 4 4 8 7 7 若 v=[1 3],w=[2 1 1], 计算a(v,w) ans = 2 1 1 8 7 7 若 v=[1 2 3], w=[1 3], 计算a(v,w) ans = 1 3 4 6 7 9 (2) 改变数组尺寸(Change the size of array) 例:将一个2×3 阶的数组改变为6×1阶 a=[1 2 3 ; 4 5 6]’ b=a(:) a = 1 4 2 5 3 6 b = 1 2 3 4 5 6 ****可利用(:)置换数组元素: 如 a(:)=11:16 a = 11 14 12 15 13 16 也可以用一个与a有相同元素的变量进行赋值,如 b=11:16, a(:)=b, 结果与上例相同。 数组尺寸可以reshape命令实现,如: a=[1 2 3 4;5 6 7 8] b=reshape(a,4,2) a = 1 2 3 4 5 6 7 8 b = 1 3 5 7 2 4 6 8 也可以将矢量变为数组。例: a=reshape(1:10,2,5) a = 1 3 5 7 9 2 4 6 8 10 5. 一维逻辑数组: (one dimensional logical array)逻辑数组是一维数组, 元素非0即1,是关系运算和逻辑运算的结果,在与其他数组作用时起到一个开关的作用,设a是一个m×n阶数组,L是一个m×1阶的逻辑数组,a(L,:) 将给出L中非零元素所对应的a的行元素组成的子数组。如果L不是逻辑数组,需要用logical 命令说明一下:L=logical(L),如: a=[1 2 3 4 5 6 7 8 9] L=[1;1;0] L=logical(L); %如L不是逻辑数组需用logical命令说明 a(L,:) 则 a(L,:) 给出L中非0元素所对应a的行元素组成的数组。 a=[1 2 3 4 5 6] 也可用a(:,L) 对列进行取舍。(无论L是行还是列数组,它只按其下标数对矩阵的行或列进行取舍) ans = 1 2 4 5 7 8 还有其它元素的取舍方法,如: 命令 x=x(x<=3*std(x))是把那些大于3倍标准差的元素保留下来。 x=[42 34 21 6 34 65 123 34 4981] x=x(x<=3*std(x)) 命令 x=magic(9) L=x(:,3)>10 x=x(L,:) 是将x中第三列元素大于10的元素所对应的行保留,组成新的x取代原数组。 x = 47 58 69 80 1 12 23 34 45 57 68 79 9 11 22 33 44 46 67 78 8 10 21 32 43 54 56 77 7 18 20 31 42 53 55 66 6 17 19 30 41 52 63 65 76 16 27 29 40 51 62 64 75 5 26 28 39 50 61 72 74 4 15 36 38 49 60 71 73 3 14 25 37 48 59 70 81 2 13 24 35 L = 1 1 0 1 1 1 1 1 1 x = 47 58 69 80 1 12 23 34 45 57 68 79 9 11 22 33 44 46 77 7 18 20 31 42 53 55 66 6 17 19 30 41 52 63 65 76 16 27 29 40 51 62 64 75 5 26 28 39 50 61 72 74 4 15 36 38 49 60 71 73 3 14 25 37 48 59 70 81 2 13 24 35 6. 建立多维数组:(Setting a multidimensional array) 大于二维的高阶数组(m×n×p×…阶) (1)利用下标建立多维数组(setting a multidimensional array by using subscript) 先建立二维数组,再将其扩展为多维数组, 如: a=[5 7 8; 0 1 9; 4 3 6]; a(:,:,2)=[1 0 4; 3 5 6; 9 8 7] %利用下标建立第三维 a(:,:,1) = 5 7 8 0 1 9 4 3 6 a(:,:,2) = 1 0 4 3 5 6 9 8 7 (2) 用标准数组函数建立多维数组(setting a multidimensional array by using standard array function) 函数b=randn(m,n,p) 建立m×n×p阶矩阵, 如“ b=randn(4,3,2) b(:,:,1) = -0.6918 -1.4410 0.8156 0.8580 0.5711 0.7119 1.2540 -0.3999 1.2902 -1.5937 0.6900 0.6686 b(:,:,2) = 1.1908 -1.6041 -0.8051 -1.2025 0.2573 0.5287 -0.0198 -1.0565 0.2193 -0.1567 1.4151 -0.9219 类似的函数还有 ones, zeros 等函数 (3)用repmat函数建立多维数组,(setting a multidimensional array by using repmat function) B=repmat(x, [m n p]) 即建立一个所有元素都为x的m×n×p阶数组。如: B=repmat(5, [3 4 2]) B(:,:,1) = 5 5 5 5 5 5 5 5 5 5 5 5 B(:,:,2) = 5 5 5 5 5 5 5 5 5 5 5 5 为3×4×2阶数组 x也可以是数组,如: b=repmat([1 2; 3 4], [2 4 3]) b(:,:,1) = 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 b(:,:,2) = 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 b(:,:,3) = 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 建立了一个4×8×3阶的数组 (4). 用改变数组尺寸的方法建立多维数组(setting a multidimensional array by using the method of size variation) 利用reshape函数改变数组尺寸,如“ a=reshape(1:24,2 , 4, 3) 将一个1~24阶组成的一维数组变为2×4×3阶的多维数组 a(:,:,1) = 1 3 5 7 2 4 6 8 a(:,:,2) = 9 11 13 15 10 12 14 16 a(:,:,3) = 17 19 21 23 18 20 22 24 元素的排列顺序是从第一层第一列开始,接下来排第二列,直至完成第一层,然后再从第二排第一列排,依此类推。 (5) 用数组串联的方法建立多维数组(setting a multidimensional array by using the method of array series arrangement) cat函数可以沿指定维数输入数据,如: b=cat(3,[2 8; 0 5],[1 3;7 9]) %表示沿第三维的方向建立两层数组 b(:,:,1) = 2 8 0 5 b(:,:,2) = 1 3 7 9 7. 空数组:(Empty array) 语句[ ]将一个0×0阶的数组赋给X, 存在于工作空间,具有空尺寸,与起清除工作空间的clear命令完全不同。 如程序n<1, x=1:n 会产生空数组。 若要将某些行与列从数组中移去,采用将其置为空数组是一种有效的方法。如: a =[1 2 3 4 5 6 7 8 9] a(:,[1 3])=[ ] a = 2 5 8 %The program for Kic calculation Af=input('疲劳裂纹长度(mm):a='); %The length of crack A0=input('机加裂纹长度(cm):a0='); Al=(Af.*0.1+A0) Pq=input('载荷(kN):Pq='); %The load level when crack is just opning W=5; B=2.5; R=Al/W FR=(2+R).*(0.886.*ones(size(R))+4.64*R-13.32*R.^2+14.72*R.^3-5.6*R.^4)./(1-R).^(3/2) Kq=(Pq./(B*(W^(1/2)))).*FR
本文档为【matlab基础教程第一、二章 MATLAB 入门】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_969320
暂无简介~
格式:doc
大小:278KB
软件:Word
页数:47
分类:
上传时间:2018-09-09
浏览量:29