资源预览内容
第1页 / 共236页
第2页 / 共236页
第3页 / 共236页
第4页 / 共236页
第5页 / 共236页
第6页 / 共236页
第7页 / 共236页
第8页 / 共236页
第9页 / 共236页
第10页 / 共236页
亲,该文档总共236页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MATLABMATLAB在大学物理在大学物理中的应用中的应用主讲老师:张海艳主讲老师:张海艳 实验报告发到:实验报告发到:wjmatlab126.comwjmatlab126.com 考试:平时成绩及上机:占总成绩的平时成绩及上机:占总成绩的30%:上机考试成绩上机考试成绩:占总成绩的占总成绩的70%财富可以通过辛勤劳动获取,财富可以通过辛勤劳动获取, 也可能由于喜中彩票大奖获得。也可能由于喜中彩票大奖获得。但知识却必须是通过一点一滴但知识却必须是通过一点一滴 努力学习逐渐积累努力学习逐渐积累 珍惜每一天,每一节课,每一分钟珍惜每一天,每一节课,每一分钟诚信MATLABMATLAB学习的忠告学习的忠告1 1 学学学学MatlabMatlab并不难,难的是学会怎么用。并不难,难的是学会怎么用。并不难,难的是学会怎么用。并不难,难的是学会怎么用。2 2不要试图掌握不要试图掌握不要试图掌握不要试图掌握matlabmatlab的每一个功能,熟悉和你专业的每一个功能,熟悉和你专业的每一个功能,熟悉和你专业的每一个功能,熟悉和你专业最相关的部分就可以了。最相关的部分就可以了。最相关的部分就可以了。最相关的部分就可以了。 3 3 不要问:明天要交作业了,哪位大侠帮忙写个程序不要问:明天要交作业了,哪位大侠帮忙写个程序不要问:明天要交作业了,哪位大侠帮忙写个程序不要问:明天要交作业了,哪位大侠帮忙写个程序吧,或初学吧,或初学吧,或初学吧,或初学matlabmatlab,不懂呀,大哥大姐帮忙写个程,不懂呀,大哥大姐帮忙写个程,不懂呀,大哥大姐帮忙写个程,不懂呀,大哥大姐帮忙写个程序之类的话序之类的话序之类的话序之类的话4 4 不要说:不要让我看不要说:不要让我看不要说:不要让我看不要说:不要让我看matlabmatlab英文的帮助我看不懂英文的帮助我看不懂英文的帮助我看不懂英文的帮助我看不懂- -谁都是从不懂到懂的谁都是从不懂到懂的谁都是从不懂到懂的谁都是从不懂到懂的 5 5 不要担心:我编程能力差,我一定用不好不要担心:我编程能力差,我一定用不好不要担心:我编程能力差,我一定用不好不要担心:我编程能力差,我一定用不好matlabmatlab。 6 6 不要只问不学不要只问不学不要只问不学不要只问不学 7 7 学学学学maltabmaltab要有耐心要有耐心要有耐心要有耐心8 8 看到某本书中或论坛的帖子中解决问题的方法要试看到某本书中或论坛的帖子中解决问题的方法要试看到某本书中或论坛的帖子中解决问题的方法要试看到某本书中或论坛的帖子中解决问题的方法要试着解决类似的问题,要举一反三,要学会变通着解决类似的问题,要举一反三,要学会变通着解决类似的问题,要举一反三,要学会变通着解决类似的问题,要举一反三,要学会变通9 9 有了问题先自己想,察看帮助,有了问题先自己想,察看帮助,有了问题先自己想,察看帮助,有了问题先自己想,察看帮助,1 1个小时后没有结果个小时后没有结果个小时后没有结果个小时后没有结果再问别人再问别人再问别人再问别人 ,不要一有问题就发问,然后什么都不管,不要一有问题就发问,然后什么都不管,不要一有问题就发问,然后什么都不管,不要一有问题就发问,然后什么都不管了,把希望寄托在别人身上了,把希望寄托在别人身上了,把希望寄托在别人身上了,把希望寄托在别人身上10 10 学会用搜索引擎,在网上可以找到很多资料,有的学会用搜索引擎,在网上可以找到很多资料,有的学会用搜索引擎,在网上可以找到很多资料,有的学会用搜索引擎,在网上可以找到很多资料,有的问题一搜索就能找到的,就不要来问别人了问题一搜索就能找到的,就不要来问别人了问题一搜索就能找到的,就不要来问别人了问题一搜索就能找到的,就不要来问别人了 例:电位梯度与电场强度的关系: 若已知电位的表示式,计算电场并画出等位线和电场方向clearU = input(请输入电位方程,请输入电位方程,U(x,y)=,s)xmax = 5;ymax = 5;Ngrid = 20;x = linspace(-xmax,xmax,20);y =x;x,y = meshgrid(x,y);Up = eval(U);Ex,Ey = gradient(-Up);clfsubplot(1,2,1),meshc(x,y,Up);subplot(1,2,2)axis(-xmax,xmax,-ymax,ymax)cs = contour(x,y,Up);clabel(cs)hold onquiver(x,y,Ex,Ey)hold off 一一. MATLAB操作基操作基础二二. Notebook三三. 数数组与与矩矩阵第一章第一章 MATLAB基础基础五五. M文件文件设计四四. 符符号运号运算算 六六. 图形形绘制制 七七. 动态图形制作形制作与与图形形编辑1. MATLAB简介介2. MATLAB的安装的安装3. MATLAB的的启启动和退出和退出一、一、 MATLAB操作基础操作基础5. MATLAB的的帮帮助系助系统4. MATLAB桌桌面平台面平台6. 一一个个实例例返回1. MATLAB简介介lMATLAB已成为各种系统仿真、数字信已成为各种系统仿真、数字信号处理、科学可视化的标准语言。号处理、科学可视化的标准语言。l MATLAB已确认为必须掌握的计算工具,已确认为必须掌握的计算工具,是从理论通向实际的桥梁,是最可信赖是从理论通向实际的桥梁,是最可信赖的科技资源之一。的科技资源之一。返回2. MATLAB的安装的安装l从光盘安装从光盘安装MATLAB或从安装程序进行安装或从安装程序进行安装l采用采用SWYN(Select What You Need)安装模式)安装模式lMATLAB组件的选择:通过组件的选择:通过“勾选勾选”决定哪些组件决定哪些组件被安装。被安装。返回3. MATLAB的的启启动和退出和退出l启动启动有有3种常见方法:种常见方法:(1) 双击双击MATLAB快捷方式。快捷方式。(2) “开始开始”“程序程序”“Matlab7.0”“MATLAB 7.0” (3)运行运行MATLAB系统启动程序系统启动程序matlab.exe。3. MATLAB的的启启动和退出和退出l退出退出也有也有3 3种常见方法:种常见方法: (1)(1)单击单击MATLABMATLAB桌面窗口的关闭按钮。桌面窗口的关闭按钮。 (2)(2)在在MATLABMATLAB命命令令窗窗口口FileFile菜菜单单中中选选择择Exit Exit MATLABMATLAB命令。命令。 (3)(3)在在MATLABMATLAB命令窗口输入命令窗口输入ExitExit或或QuitQuit命令。命令。返回 4. MATLAB桌桌面平台面平台图形窗口(图形窗口(图形窗口(图形窗口(FigureFigure)命令窗口(指令窗)(命令窗口(指令窗)(命令窗口(指令窗)(命令窗口(指令窗)(Command Window)Command Window)启动平台窗口(交互界面分类目录窗)启动平台窗口(交互界面分类目录窗)启动平台窗口(交互界面分类目录窗)启动平台窗口(交互界面分类目录窗) (Launch PadLaunch Pad)工作空间窗口(浏览器)工作空间窗口(浏览器)工作空间窗口(浏览器)工作空间窗口(浏览器) ( Workspace Browser Workspace Browser )命令历史窗口(历史指令窗)(命令历史窗口(历史指令窗)(命令历史窗口(历史指令窗)(命令历史窗口(历史指令窗)(Command History)Command History)当前路径(当前目录)窗口(当前路径(当前目录)窗口(当前路径(当前目录)窗口(当前路径(当前目录)窗口( Current Directory Browser)Current Directory Browser)帮助导航帮助导航帮助导航帮助导航/ /浏览器(浏览器(浏览器(浏览器(Help Navigator/BrowserHelp Navigator/Browser)内存数组编辑器(内存数组编辑器(内存数组编辑器(内存数组编辑器(Array Editor Array Editor )MM文件编辑文件编辑文件编辑文件编辑/ /调试器(调试器(调试器(调试器( Editor/Debugger Editor/Debugger )返回lProfiler 程序性能剖析窗口(调优器)lEvaluate 运行lShortcut 捷径lDuplicate 复写、复制常用技巧常用技巧指指 令令含含 义义cdcd设置当前工作目录设置当前工作目录clfclf清除图形窗清除图形窗clcclc清除指令窗中显示内容清除指令窗中显示内容clearclear清除清除MATLABMATLAB工作空间中保存的变量工作空间中保存的变量dirdir列出指定目录下的文件和子目录清单列出指定目录下的文件和子目录清单editedit打开打开M M文件编辑器文件编辑器exitexit关闭关闭/ /退出退出MATLABMATLABquitquit关闭关闭/ /退出退出MATLABMATLABmdmd创建目录创建目录moremore使其后的显示内容分页进行使其后的显示内容分页进行typetype显示指定显示指定M M文件的内容文件的内容whichwhich指出其后文件所在的目录指出其后文件所在的目录:命令窗口的常用控制指令命令窗口的常用控制指令命令窗口的常用控制指令命令窗口的常用控制指令命令窗口命令窗口中中指令行的编辑指令行的编辑l为方便操作,为方便操作,MATLABMATLAB不但允许用户在指令窗中对输入指令进行不但允许用户在指令窗中对输入指令进行各种编辑和运行,而且允许用户对已经输入的指令进行回调、各种编辑和运行,而且允许用户对已经输入的指令进行回调、编辑和重运行。编辑和重运行。键键 名名作作 用用前寻式调回已输入过的指令行前寻式调回已输入过的指令行后寻式调回已输入过的指令行后寻式调回已输入过的指令行在当前行中左移光标在当前行中左移光标在当前行中右移光标在当前行中右移光标PageUpPageUp前寻式翻阅当前窗中的内容前寻式翻阅当前窗中的内容PageDownPageDown后寻式翻阅当前窗中的内容后寻式翻阅当前窗中的内容HomeHome使光标移到当前行的首端使光标移到当前行的首端EndEnd使光标移到当前行的尾端使光标移到当前行的尾端DeleteDelete删去光标右边的字符删去光标右边的字符BackspaceBackspace删去光标左边的字符删去光标左边的字符EscEsc清除当前行的全部内容清除当前行的全部内容Current Directory、路径设置器路径设置器Current DirectoryCurrent Directory当前路径窗口当前路径窗口当前路径窗口当前路径窗口简简介介介介l l 当前目录是指当前目录是指MATLABMATLAB运行文件时的工作目录,运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可只有在当前目录或搜索路径下的文件、函数可以被运行或调用。以被运行或调用。l在在当前目录窗口当前目录窗口中可以显示或改变当前目录,中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。还可以显示当前目录下的文件并提供搜索功能。l将用户目录设置成当前目录也可使用将用户目录设置成当前目录也可使用cdcd命令命令。例如,将用户目录例如,将用户目录D:D:matlabworkmatlabwork设置为当前目设置为当前目录,可在命令窗口输入命令:录,可在命令窗口输入命令:cd D:cd D:matlabworkmatlabworkMATLAB的搜索路径和路径的搜索路径和路径设置器置器 当用户在当用户在MATLABMATLAB命令窗口输入一条命令后,命令窗口输入一条命令后,MATLABMATLAB按照一定次序寻找相关的文件。基本的搜按照一定次序寻找相关的文件。基本的搜索过程是:索过程是:(1) (1) 检查该命令是不是一个变量。检查该命令是不是一个变量。(2) (2) 检查该命令是不是一个内部函数。检查该命令是不是一个内部函数。(3) (3) 检查该命令是否当前目录下的检查该命令是否当前目录下的M M文件。文件。(4) (4) 检查该命令是否检查该命令是否MATLABMATLAB搜索路径中其他目录搜索路径中其他目录下的下的M M文件。文件。 用户可以将自己的工作目录列入用户可以将自己的工作目录列入MATLABMATLAB搜索路径,从而将用户目录纳入搜索路径,从而将用户目录纳入MATLABMATLAB系统统系统统一管理。设置搜索路径的方法有:一管理。设置搜索路径的方法有: (1) (1) 用用pathpath命令设置搜索路径。例如,将命令设置搜索路径。例如,将用户目录用户目录c:mydirc:mydir加到搜索路径下,可在命令加到搜索路径下,可在命令窗口输入命令:窗口输入命令:path(pathpath(path, , D:D:matlabworkmatlabwork) )(2) (2) 用对话框设置搜索路径用对话框设置搜索路径 5. MATLAB的的帮帮助系助系统帮助窗口帮助窗口帮助命令帮助命令演示系统演示系统远程帮助系统远程帮助系统返回5. MATLAB的的帮帮助系助系统l帮助窗口帮助窗口 进入帮助窗口可以通过以下进入帮助窗口可以通过以下3 3种方法:种方法:(1) (1) 单击单击MATLABMATLAB主窗口工具栏中的主窗口工具栏中的HelpHelp按钮。按钮。(2) (2) 在命令窗口中输入在命令窗口中输入helpwinhelpwin、helpdeskhelpdesk或或docdoc。(3) (3) 选择选择HelpHelp菜单中的菜单中的“MATLAB HelpMATLAB Help”选项。选项。返回 MATLAB帮助命令包括帮助命令包括help、lookfor以以及模糊查询。及模糊查询。 help命令命令 在在MATLAB 命令窗口中直接输入命令窗口中直接输入help命命令将会显示当前帮助系统中所包含的所有项目,令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通即搜索路径中所有的目录名称。同样,可以通过过help加函数名来显示该函数的帮助说明。加函数名来显示该函数的帮助说明。帮助命令常用常用helphelp命令命令lhelp help matfunmatfun:矩阵函数数值线性代数:矩阵函数数值线性代数lhelp generalhelp general:通用命令:通用命令lhelp graphicshelp graphics:通用图形函数:通用图形函数lhelp help elfunelfun:基本的数学函数:基本的数学函数lhelp help elmatelmat:基本矩阵和矩阵操作:基本矩阵和矩阵操作lhelp help datafundatafun:数据分析和傅立叶变换函数:数据分析和傅立叶变换函数lhelp opshelp ops:操作符和特殊字符:操作符和特殊字符lhelp help polyfunpolyfun:多项式和内插函数:多项式和内插函数lhelp help langlang:语言结构和调试:语言结构和调试lhelp help strfunstrfun:字符串函数:字符串函数lhelp controlhelp control:控制系统工具箱函数:控制系统工具箱函数lhelpwinhelpwin:帮助窗口:帮助窗口lhelpdeskhelpdesk:帮助桌面,浏览器模式:帮助桌面,浏览器模式lookfor命令命令 helphelp命令只搜索出那些关键字完全匹配的命令只搜索出那些关键字完全匹配的结果,结果,lookforlookfor命令对搜索范围内的命令对搜索范围内的M M文件进行文件进行关键字搜索,条件比较宽松。关键字搜索,条件比较宽松。lookforlookfor命令只对命令只对M M文件的第一行进行关键字搜文件的第一行进行关键字搜索。若在索。若在lookforlookfor命令加上命令加上-all-all选项,则可对选项,则可对M M文件进行全文搜索。文件进行全文搜索。5. MATLAB的的帮帮助系助系统 LookforLookfor函数函数 它可提供通过一般的关它可提供通过一般的关键词,搜索出一组与之相关的命令键词,搜索出一组与之相关的命令lookforlookfor fourierfourier 寻找含有傅立叶变换寻找含有傅立叶变换的相关指令的相关指令helphelp、lookfor lookfor 两个指令构成了两个指令构成了matlabmatlab语言相当完善的在线帮助查语言相当完善的在线帮助查询系统询系统 lookfor fouri 寻找所有包含寻找所有包含fouri的指令的指令和注释和注释如如 FFT Discrete Fourier transform模糊查询模糊查询 MATLAB 6.0MATLAB 6.0以上的版本提供了一种类似以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命模糊查询的命令查询方法,用户只需要输入命令的前几个字母,然后按令的前几个字母,然后按TabTab键,系统就会列键,系统就会列出所有以这几个字母开头的命令。出所有以这几个字母开头的命令。返回5. MATLAB的的帮帮助系助系统l演示系统演示系统 在帮助窗口中选择演示系统在帮助窗口中选择演示系统(Demos)(Demos)选项卡,选项卡,然后在其中选择相应的演示模块,或者在命令然后在其中选择相应的演示模块,或者在命令窗口输入窗口输入DemosDemos,或者选择主窗口,或者选择主窗口HelpHelp菜单中菜单中的的DemosDemos子菜单,打开演示系统。子菜单,打开演示系统。返回5. MATLAB的的帮帮助系助系统l远程帮助系统远程帮助系统 在在MathWorksMathWorks公司的主页公司的主页(http:/(http:/www.mathworks.comwww.mathworks.com) )上可以找到很多上可以找到很多有用的信息,国内的一些网站也有丰富的信息有用的信息,国内的一些网站也有丰富的信息资源。资源。返回二、二、MATLAB笔记本笔记本Notebook1.1.NotebookNotebook的安装及启动的安装及启动2.2.输入单元输入单元的定义与执行的定义与执行3.3.计算区计算区的定义与执行的定义与执行4.4.输出格式输出格式控制控制5.5.NotebookNotebook菜单菜单的其他命令的其他命令6.6.M-bookM-book模板样式模板样式的修改的修改返回1、Notebook的安装及启动l l笔记本的安装笔记本的安装笔记本的安装笔记本的安装在在在在MATLABMATLAB命令窗口输入:命令窗口输入:命令窗口输入:命令窗口输入:notebook -setupnotebook -setupl l笔记本的启动笔记本的启动笔记本的启动笔记本的启动1 1)从)从)从)从WordWord中启动笔记本中启动笔记本中启动笔记本中启动笔记本2 2)从)从)从)从MATLABMATLAB中启动笔记本中启动笔记本中启动笔记本中启动笔记本l lMATLABMATLAB笔记本的界面笔记本的界面笔记本的界面笔记本的界面 MATLABMATLAB笔记本的界面和通常的笔记本的界面和通常的笔记本的界面和通常的笔记本的界面和通常的WordWord界面主要有两点区别:界面主要有两点区别:界面主要有两点区别:界面主要有两点区别: 1) 1)在菜单栏中多了一个在菜单栏中多了一个在菜单栏中多了一个在菜单栏中多了一个NotebookNotebook菜单项,笔记本的许多操作菜单项,笔记本的许多操作菜单项,笔记本的许多操作菜单项,笔记本的许多操作都可以通过该菜单项的命令来完成。都可以通过该菜单项的命令来完成。都可以通过该菜单项的命令来完成。都可以通过该菜单项的命令来完成。 2) 2)在在在在“ “文件文件文件文件” ”菜单项下多了一个菜单项下多了一个菜单项下多了一个菜单项下多了一个New M-bookNew M-book命令项。如果命令项。如果命令项。如果命令项。如果在在在在M-bookM-book模板下要建立新的模板下要建立新的模板下要建立新的模板下要建立新的M-bookM-book文档,可以选择该命令。文档,可以选择该命令。文档,可以选择该命令。文档,可以选择该命令。返回l基本操作基本操作l自初始化单元及其应用自初始化单元及其应用l单元群及其应用单元群及其应用2、输入单元的定义与执行、输入单元的定义与执行返回l基本操作基本操作(1)(1)输入单元的定义输入单元的定义 首先选中所需命令,然后在首先选中所需命令,然后在Notebook菜单菜单项中选择项中选择Define Input Cell命令,于是被选中的命令,于是被选中的MATLAB命令成为输入单元。也可以在选中所命令成为输入单元。也可以在选中所需命令后,直接按组合键需命令后,直接按组合键Alt+D。(2)(2)输入单元的执行输入单元的执行 选择选择Notebook菜单项中的菜单项中的Evaluate Cell命命令或直接按组合键令或直接按组合键Ctrl+Enter。(3)输出单元输出单元输出单元输出单元 输入单元执行后产生输出单元。输入单元执行后产生输出单元。例例1:定义并执行输入单元。:定义并执行输入单元。操作步骤如下:操作步骤如下:(1)在文档中输入在文档中输入MATLAB命令。命令。(2)选中命令行,在选中命令行,在Notebook菜单项中选菜单项中选Define Input Cell命令或直接按组合键命令或直接按组合键Alt+D,于是命令行就变成于是命令行就变成了了“绿色绿色”的输入单元。的输入单元。 (3)若要把输入单元送去执行,则可用若要把输入单元送去执行,则可用Notebook菜单项菜单项中的中的Evaluate Cell命令或直接按组合键命令或直接按组合键Ctrl+Enter,执行后产生执行后产生“蓝色蓝色”的输出单元:的输出单元: (4 4)输入单元定义与执行同时进行)输入单元定义与执行同时进行 先选中先选中MATLAB命令,然后从命令,然后从Notebook菜单菜单项中选择项中选择Evaluate Cell命令或直接按组合键命令或直接按组合键Ctrl+Enter,不但使被选中的命令成为输入单元,不但使被选中的命令成为输入单元,而且送去执行,产生输出单元。而且送去执行,产生输出单元。例例2:“输入单元定义与执行同时进行。输入单元定义与执行同时进行。 在英文状态下,以文本方式键入命令,然后在英文状态下,以文本方式键入命令,然后选中命令并按选中命令并按Ctrl+Enter键,则得到输入、输出单键,则得到输入、输出单元。元。返回l自初始化单元及其应用自初始化单元及其应用(1)自初始化单元)自初始化单元 选择选择Notebook菜单中的菜单中的Define AutoInit Cell命令即可。命令即可。(2)自初始化单元的应用)自初始化单元的应用返回l单元群及其应用单元群及其应用(1)单元群)单元群 单元群单元群(Cell Group)是多行输入单元或自是多行输入单元或自初始化单元组成的一个整体。初始化单元组成的一个整体。(2)单元群的应用)单元群的应用 单元群的用途主要有两个:单元群的用途主要有两个:l为保证为保证MATLAB命令结构命令结构(如循环结构、条件结构如循环结构、条件结构)的完整。的完整。l为保证输出结果为保证输出结果(如图形如图形)的完整。的完整。返回3 3、计算区的定义与执行、计算区的定义与执行 定义计算区的方法是:定义计算区的方法是:先选定包含普通先选定包含普通Word文本、文本、输入单元和输出单元的一个连续区,然后选择输入单元和输出单元的一个连续区,然后选择Notebook菜单中的菜单中的Define Calc Zone命令。命令。 一旦计算区被定义后,不管光标在计算区的什么一旦计算区被定义后,不管光标在计算区的什么位置,只要选择位置,只要选择Notebook菜单中的菜单中的Evaluate Calc Zone命令即可执行计算区中的全部输入单元,且在命令即可执行计算区中的全部输入单元,且在每个输入单元后面以输出单元形式给出相应的计算结每个输入单元后面以输出单元形式给出相应的计算结果。果。返回4 4、输出格式控制、输出格式控制 可以通过可以通过Notebook菜单中的菜单中的Notebook Options命令命令来实现。选择该命令后,会弹出输出格式控制对话框,以来实现。选择该命令后,会弹出输出格式控制对话框,以后的操作都是针对该对话框进行。后的操作都是针对该对话框进行。l输出数据格式控制输出数据格式控制1)输出数据的表示方式输出数据的表示方式2)输出数据间的空行控制输出数据间的空行控制l输出图形格式控制输出图形格式控制1)图形镶嵌的控制图形镶嵌的控制2)曲面图色彩控制曲面图色彩控制3)图形背景色的控制图形背景色的控制4)图形大小的控制图形大小的控制返回5 5、NotebookNotebook菜单的其他命令菜单的其他命令l整个整个M-bookM-book文档输入单元的执行文档输入单元的执行 Notebook Notebook菜单项中的菜单项中的Evaluate M-bookEvaluate M-book命令可以把整个命令可以把整个M-bookM-book文档中的所有输入单元送到文档中的所有输入单元送到MATLABMATLAB中去执行。不管光标处于文档中去执行。不管光标处于文档的什么位置,执行总是从文档首部开始。的什么位置,执行总是从文档首部开始。l删去删去M-bookM-book文档中所有输出单元文档中所有输出单元 Notebook Notebook菜单项中的菜单项中的Purge Output CellsPurge Output Cells命令可以删去命令可以删去M-M-bookbook文档中所有输出单元。文档中所有输出单元。l单元转化为文本单元转化为文本 选定单元,再选择选定单元,再选择NotebookNotebook菜单中的菜单中的UndefineUndefine Cells Cells命令。或将命令。或将光标置于单元之中,按组合键光标置于单元之中,按组合键AltAltU U。 当某输入单元或单元群被转化为文本时,与之相应的输出单元也当某输入单元或单元群被转化为文本时,与之相应的输出单元也被自动转化为文本。被自动转化为文本。返回6 6、M-bookM-book模板样式的修改模板样式的修改 同其他同其他Word模板一样,用户既可以模板一样,用户既可以修改修改M-book模板原有样式,也可以加入模板原有样式,也可以加入新样式。例如,现有的新样式。例如,现有的M-book模板中,模板中,输入单元是输入单元是绿色绿色的,输出单元和自初始化的,输出单元和自初始化单元是单元是蓝色蓝色的,错误单元是的,错误单元是红色红色的。现在的。现在可以把输出单元的颜色变为黑色。可以把输出单元的颜色变为黑色。返回三、数组与矩阵三、数组与矩阵n 变量和数值变量和数值n MATLABMATLAB矩阵矩阵n 字符串字符串返回变量和数值变量和数值1 1、数据类型、数据类型 MATLAB的数据类型主要包括:的数据类型主要包括: 单精度(单精度(单精度(单精度(singlesingle)数值型数值型数值型数值型 双精度(双精度(双精度(双精度(doubledouble) 整数类(整数类(整数类(整数类(intint uintuint )字符串型字符串型字符串型字符串型(char)(char)元胞型(元胞型(元胞型(元胞型(cellcell)结构型结构型结构型结构型( (structstruct) ) a=2; b=int8(a); c=single(a); whos a b c Name Size Bytes Class a 1x1 8 double array b 1x1 1 int8 array c 1x1 4 single arrayGrand total is 3 elements using 13 bytesl MATLAB7.3定义了定义了15种基本的数据类型种基本的数据类型 ,包包括整型、浮点型、字符型和逻辑型等括整型、浮点型、字符型和逻辑型等 。2 2、数值、数值1)1)数值的表达方式数值的表达方式l l十进制表示十进制表示十进制表示十进制表示 自然记数法(小数形式)自然记数法(小数形式)自然记数法(小数形式)自然记数法(小数形式)l l表示形式表示形式表示形式表示形式 科学记数法(指数形式)科学记数法(指数形式)科学记数法(指数形式)科学记数法(指数形式) 2)2)2)2)矩阵和数组的概念矩阵和数组的概念矩阵和数组的概念矩阵和数组的概念l l数组(数组(数组(数组(arrayarray) 数组是由一组复数排成的长方形阵列(而实数可视为复数的虚数组是由一组复数排成的长方形阵列(而实数可视为复数的虚数组是由一组复数排成的长方形阵列(而实数可视为复数的虚数组是由一组复数排成的长方形阵列(而实数可视为复数的虚部为部为部为部为0 0的特例)。的特例)。的特例)。的特例)。l l矩阵(矩阵(矩阵(矩阵(matrixmatrix) 有有mnmn 个数个数aijaij ( i = 1, 2, m ; j = 1, 2,n ) ( i = 1, 2, m ; j = 1, 2,n )的数组将的数组将其排成如下格式(用方括号括起来)的其排成如下格式(用方括号括起来)的“表表”: a11 a12 a1n A = a21 a22 a2n am1 am2 amn注:数组用方括号括起来后已作为一个抽象的特殊量注:数组用方括号括起来后已作为一个抽象的特殊量矩阵矩阵l向量向量(vector):l标量标量(数字数字scalar): 标量和向量是矩阵的特例,而矩阵是数标量和向量是矩阵的特例,而矩阵是数组的特例。组的特例。 lMATLABMATLAB把复数作为一个整体处理,虚数单把复数作为一个整体处理,虚数单位用自定义变量位用自定义变量i i或或j j表示。表示。3 3)复数和)复数和复数复数矩阵矩阵 z=3.4+34iz = 3.4000 +34.0000i z=3.4+34jz = 3.4000 +34.0000i z=3.4+i34? Undefined function or variable i34. a=3.4;b=9; a=3.4;b=9; r= r=a+bia+bi? Undefined function or variable bi.? Undefined function or variable bi. r= r=a+bja+bjUsage: M = Usage: M = bj(Data,Ordersbj(Data,Orders); ); M = M = bj(Data,Orders,Propbj(Data,Orders,Prop/Value pairs)./Value pairs).r =r = r= r=a+jba+jb? Undefined function or variable ? Undefined function or variable jbjb. . r= r=a+iba+ib? Undefined function or variable ? Undefined function or variable ibib. . r= r=a+ia+i*b*br =r = 3.4000 + 9.0000i 3.4000 + 9.0000i complex(a,bcomplex(a,b) )ansans = = 3.4000 + 9.0000i 3.4000 + 9.0000il复数复数z=z=a+bia+bi= =rereii直角坐标表示和极坐标表示之间转直角坐标表示和极坐标表示之间转换的换的MATLABMATLAB指令如下:指令如下:real(zreal(z) z) z的实部的实部a=a=rcosrcosimag(zimag(z) z) z的虚部的虚部b=b=rsinrsinabs(zabs(z) z) z的模的模r=(ar=(a2 2+b+b2 2) )angle(zangle(z) z) z的相角的相角=arctg(barctg(b/a)/a)conj(zconj(z) z) z的共轭的共轭a-bia-bilMATLABMATLAB的矩阵元素允许是复数、复变量和由它们组成的矩阵元素允许是复数、复变量和由它们组成的表达式。的表达式。 real(r)ans = 3.4000 imag(r)ans = 9 abs(r)ans = 9.6208 angle(r)ans = 1.2096 conj(r)ans = 3.4000 - 9.0000i复数矩阵复数矩阵l复数矩阵中的元素的虚数部分用复数矩阵中的元素的虚数部分用i i和和j j方式方式来输入,显示时只用来输入,显示时只用i i方式表示。方式表示。l复数矩阵可以有两种方式表示:复数矩阵可以有两种方式表示:lA=1 2;3 4+i*5 6;7 8A=1 2;3 4+i*5 6;7 8lA=1+5*i 2+6*I;3+7*i 4+8*iA=1+5*i 2+6*I;3+7*i 4+8*il其显示结果是一样的。其显示结果是一样的。 变变变变量量量量不不不不需需需需要要要要事事事事先先先先声声声声明明明明,也也也也不不不不需需需需要要要要指指指指定定定定变变变变量量量量类类类类型型型型,它它它它会会会会自自自自动动动动根根根根据据据据所所所所赋赋赋赋予予予予变变变变量量量量的的的的值值值值或或或或对对对对变变变变量量量量的的的的操操操操作作作作来来来来确确确确定定定定变变变变量量量量的的的的类类类类型型型型;赋赋赋赋值值值值过过过过程程程程中中中中,如如如如果果果果变变变变量量量量已已已已存存存存在在在在,则则则则用用用用新新新新值代替旧值,以新的类型代替旧的类型。值代替旧值,以新的类型代替旧的类型。值代替旧值,以新的类型代替旧的类型。值代替旧值,以新的类型代替旧的类型。1)1)变量的命名变量的命名变量的命名变量的命名l l在在在在MATLABMATLAB中中中中,变变变变量量量量名名名名是是是是以以以以字字字字母母母母开开开开头头头头,后后后后接接接接字字字字母母母母、数数数数字字字字或或或或下下下下划划划划线线线线的的的的字字字字符符符符序序序序列列列列. . 变变变变量量量量名名名名长长长长度度度度不不不不同同同同版版版版本本本本、不不不不同系统均有所不同。同系统均有所不同。同系统均有所不同。同系统均有所不同。l l在在在在MATLABMATLAB中,变量名中,变量名中,变量名中,变量名区分字母的大小写区分字母的大小写区分字母的大小写区分字母的大小写。l lMATLABMATLAB提提提提供供供供的的的的标标标标准准准准函函函函数数数数名名名名以以以以及及及及命命命命令令令令名名名名必必必必须须须须用用用用小小小小写写写写字母字母字母字母。例:例:例:例:my_var_201my_var_201my_var_201my_var_201(对)(对)(对)(对)my,varmy,varmy,varmy,var 201 201 201 201(错)(错)(错)(错)_max _max _max _max (错)(错)(错)(错)3 3、变量、变量 2) 2) 赋值语句赋值语句赋值语句赋值语句MATLABMATLAB赋值语句有两种格式:赋值语句有两种格式:赋值语句有两种格式:赋值语句有两种格式:(1) (1) (1) (1) 变量变量变量变量= = = =表达式表达式表达式表达式 (2) (2) (2) (2) 表达式表达式表达式表达式 变量名为变量名为变量名为变量名为ansansansans一一一一般般般般地地地地,运运运运算算算算结结结结果果果果在在在在命命命命令令令令窗窗窗窗口口口口中中中中显显显显示示示示出出出出来来来来。如如如如果果果果在在在在语语语语句句句句的的的的最最最最后后后后加加加加分分分分号号号号,那那那那么么么么,MATLABMATLAB仅仅仅仅仅仅仅仅执执执执行行行行赋值操作,不再显示运算的结果。赋值操作,不再显示运算的结果。赋值操作,不再显示运算的结果。赋值操作,不再显示运算的结果。在在在在MATLABMATLAB语语语语句句句句后后后后面面面面可可可可以以以以加加加加上上上上注注注注释释释释,注注注注释释释释以以以以%开开开开头,后面是注释的内容。头,后面是注释的内容。头,后面是注释的内容。头,后面是注释的内容。注意:分号(注意:分号(注意:分号(注意:分号(; ; ; ;)、百分号()、百分号()、百分号()、百分号(% % % %)的作用。)的作用。)的作用。)的作用。变量和赋值变量和赋值 a=2.3a = 2.3000 12ans = 12l表达式由变量名、运算符和函数名组成。表达式由变量名、运算符和函数名组成。l表达式将按与常规相同的优先级自左至右执表达式将按与常规相同的优先级自左至右执行运算。行运算。l优先级的规定是:指数运算级别最高,乘除优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低。运算次之,加减运算级别最低。l括号可以改变运算的次序。括号可以改变运算的次序。l书写表达式时,赋值符书写表达式时,赋值符“=”=”和运算符两侧和运算符两侧允许有空格,以增加可读性。允许有空格,以增加可读性。3 3)MATLABMATLAB的表达式的表达式 4) 数据的输出格式数据的输出格式l lMATLABMATLAB用用用用十十十十进进进进制制制制数数数数表表表表示示示示一一一一个个个个常常常常数数数数,具具具具体体体体可可可可采用日常记数法和科学记数法两种表示方法。采用日常记数法和科学记数法两种表示方法。采用日常记数法和科学记数法两种表示方法。采用日常记数法和科学记数法两种表示方法。l l数数数数据据据据输输输输出出出出时时时时用用用用户户户户可可可可以以以以用用用用formatformat命命命命令令令令设设设设置置置置或或或或改改改改变变变变数数数数据据据据输输输输出出出出格格格格式式式式。formatformat命命命命令令令令的的的的格格格格式式式式为为为为: format format 格式符格式符格式符格式符l l注注注注意意意意,formatformatformatformat命命命命令令令令只只只只影影影影响响响响数数数数据据据据输输输输出出出出格格格格式式式式,而而而而不不不不影响数据的计算和存储。影响数据的计算和存储。影响数据的计算和存储。影响数据的计算和存储。变量和赋值变量和赋值5 5) 预定义变量预定义变量预定义变量预定义变量 在在在在MATLABMATLAB工工工工作作作作空空空空间间间间中中中中,还还还还驻驻驻驻留留留留几几几几个个个个由由由由系系系系统统统统本本本本身身身身定定定定义义义义的的的的变变变变量量量量。它它它它们们们们有有有有特特特特定定定定的的的的含含含含义义义义,在在在在使使使使用用用用时时时时,应应应应尽尽尽尽量量量量避避避避免免免免对对对对这这这这些些些些变变变变量量量量重重重重新新新新赋赋赋赋值。值。值。值。 预定义变预定义变预定义变预定义变量量量量含义含义含义含义预定义变量预定义变量预定义变量预定义变量含义含义含义含义ansansansans计算结果的计算结果的计算结果的计算结果的缺省变量名缺省变量名缺省变量名缺省变量名NaNNaNNaNNaN或或或或nannannannan不是一个数不是一个数不是一个数不是一个数(Not a (Not a (Not a (Not a Number),Number),Number),Number),如如如如0/00/00/00/0,/epsepsepseps机器零阀值机器零阀值机器零阀值机器零阀值narginnarginnarginnargin函数输入宗量数目函数输入宗量数目函数输入宗量数目函数输入宗量数目InfInfInfInf或或或或infinfinfinf无穷大,如无穷大,如无穷大,如无穷大,如1/01/01/01/0nargoutnargoutnargoutnargout函数输入宗量数目函数输入宗量数目函数输入宗量数目函数输入宗量数目i i i i或或或或j j j j虚单元虚单元虚单元虚单元i=j= -1i=j= -1i=j= -1i=j= -1realmaxrealmaxrealmaxrealmax最大正实数最大正实数最大正实数最大正实数pipipipi圆周率圆周率圆周率圆周率realminrealminrealminrealmin最小正实数最小正实数最小正实数最小正实数每当每当MATLABMATLAB启动时,预定义变量(启动时,预定义变量(Predefined variablePredefined variable)就被产生。)就被产生。l l按按按按IEEEIEEEIEEEIEEE规定,规定,规定,规定,0/00/00/00/0,/,0000等运算都会产生等运算都会产生等运算都会产生等运算都会产生非数非数非数非数(Not a NumberNot a NumberNot a NumberNot a Number)。)。)。)。该非数在该非数在该非数在该非数在MATLABMATLABMATLABMATLAB中用中用中用中用NaNNaNNaNNaN或或或或nannannannan记述。记述。记述。记述。l l根据根据根据根据IEEEIEEEIEEEIEEE数学规范,数学规范,数学规范,数学规范,NaNNaNNaNNaN具有以下性质:具有以下性质:具有以下性质:具有以下性质:l lNaNNaNNaNNaN参与运算所得的结果也是参与运算所得的结果也是参与运算所得的结果也是参与运算所得的结果也是NaNNaNNaNNaN,即具有即具有即具有即具有传递性传递性传递性传递性;l l非数非数非数非数没有大小概念没有大小概念没有大小概念没有大小概念,因此不能比较两个非数的大小。,因此不能比较两个非数的大小。,因此不能比较两个非数的大小。,因此不能比较两个非数的大小。l l非数的功用:非数的功用:非数的功用:非数的功用:l l真实记述真实记述真实记述真实记述0/00/00/00/0,/,0000运算的后果;运算的后果;运算的后果;运算的后果;l l避免可能因避免可能因避免可能因避免可能因0/00/00/00/0,/,0000运算而造成程序执行的中断;运算而造成程序执行的中断;运算而造成程序执行的中断;运算而造成程序执行的中断;l l在数据可视化中,用来裁剪图形。在数据可视化中,用来裁剪图形。在数据可视化中,用来裁剪图形。在数据可视化中,用来裁剪图形。非数非数NaNNaNl l定义变量时应避免与常量名相同,如果改变了某个常量的定义变量时应避免与常量名相同,如果改变了某个常量的定义变量时应避免与常量名相同,如果改变了某个常量的定义变量时应避免与常量名相同,如果改变了某个常量的值,可以用值,可以用值,可以用值,可以用clearclearclearclear命令来恢复。命令来恢复。命令来恢复。命令来恢复。pi=1pi = 1clear pipians = 3.1416返回MATLAB矩阵矩阵u矩阵(二维数组)的创建(输入)矩阵(二维数组)的创建(输入)u矩阵操作矩阵操作u矩阵和数组运算矩阵和数组运算u矩阵分析矩阵分析返回矩阵的创建1.1.1.1.直接输入矩阵元素法直接输入矩阵元素法直接输入矩阵元素法直接输入矩阵元素法 2.2.2.2.利用冒号表达式建立一个向量利用冒号表达式建立一个向量利用冒号表达式建立一个向量利用冒号表达式建立一个向量3.3.3.3.用用用用matlabmatlabmatlabmatlab函数创建矩阵函数创建矩阵函数创建矩阵函数创建矩阵4.4.4.4.利用利用利用利用M M M M文件建立矩阵文件建立矩阵文件建立矩阵文件建立矩阵5.5.5.5.把外部数据调入矩阵法把外部数据调入矩阵法把外部数据调入矩阵法把外部数据调入矩阵法 ( ( ( (打开打开打开打开MATMATMATMAT数据文件数据文件数据文件数据文件) ) ) )6.6.6.6.建立大矩阵建立大矩阵建立大矩阵建立大矩阵方法方法:返回1 1、直接输入矩阵元素法直接输入矩阵元素法 对于一般较小的简单的矩阵,用户可以从键盘上直对于一般较小的简单的矩阵,用户可以从键盘上直对于一般较小的简单的矩阵,用户可以从键盘上直对于一般较小的简单的矩阵,用户可以从键盘上直接输入一系列的元素生成矩阵。接输入一系列的元素生成矩阵。接输入一系列的元素生成矩阵。接输入一系列的元素生成矩阵。 规则:规则: 矩阵元素必须用矩阵元素必须用 括住括住 矩阵元素(矩阵元素(每一行每一行 )必须用逗号或空格分隔)必须用逗号或空格分隔 在在 内矩阵的行与行之间必须内矩阵的行与行之间必须 用分号(用分号(; ;)或)或EnterEnter键分隔键分隔实现方法:实现方法: A=1,2,3;4,5,6A = 1 2 3 4 5 6 A=1 2 3;4 5 6A = 1 2 3 4 5 6 A=1 2 3 4 5 6A = 1 2 3 4 5 6 矩阵元素矩阵元素可以是任何可以是任何matlabmatlab表达式表达式 ,可以是实数,可以是实数 ,也可以是复数,复数可,也可以是复数,复数可用特殊变量用特殊变量i i,j j 输入输入 x=2 pi/2;sqrt(3) 3+5*i 返回2 2、利用、利用冒号表达式冒号表达式建立一个向量建立一个向量 冒号表达式可以产生一个行向量,一般格式是:冒号表达式可以产生一个行向量,一般格式是:其中其中e1为初始值,为初始值,e2为步长,为步长,e3为终止值。为终止值。在在MATLABMATLAB中,还可以用中,还可以用linspacelinspacelinspacelinspace函数函数函数函数产生行向量。其调用产生行向量。其调用格式为:格式为: linspace(a,b,n)其中其中a a和和b b是生成向量的第一个和最后一个元素,是生成向量的第一个和最后一个元素,n n是元素是元素总数。总数。显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。返回3、用、用matlab函数创建矩阵函数创建矩阵l空空阵阵 matlab matlab允许输入空阵,当一允许输入空阵,当一项操作无结果时,返回空阵。项操作无结果时,返回空阵。lrand rand 随机矩阵随机矩阵leye eye 单位矩阵单位矩阵lzeros zeros 全部元素都为全部元素都为0 0的矩阵的矩阵lones ones 全部元素都为全部元素都为1 1的矩阵的矩阵 l这这几几个个函函数数的的调调用用格格式式相相似似,下下面面以以产产生生零零矩矩阵阵的的zeroszeros函数为例进行说明。其调用格式是:函数为例进行说明。其调用格式是: zeros(mzeros(m) ) 产生产生mmmm零矩阵零矩阵 zeros(m,nzeros(m,n) ) 产生产生mnmn零矩阵。零矩阵。 zeros(size(Azeros(size(A) ) 产生与矩阵产生与矩阵A A同样大小的零矩同样大小的零矩阵阵l相相关关的的函函数数有有:length(A)length(A)给给出出行行数数和和列列数数中中的的较较大大者者,即即length(A)=max(size(A)length(A)=max(size(A);ndims(A)ndims(A)给给出出A A的的维数。维数。l此此外外,常常用用的的函函数数还还有有reshape(A,m,nreshape(A,m,n) ),它它在在矩矩阵阵总总元元素素保保持持不不变变的的前前提提下下,将将矩矩阵阵A A重重新新排排成成mnmn的的二二维矩阵。维矩阵。返回 4、利用利用M文件创建和保存数组文件创建和保存数组 对对于于比比较较大大且且比比较较复复杂杂的的矩矩阵阵,可可以以为为它它专专门门建建立一个立一个M M文件。文件。 例:例: 利用利用M M文件建立文件建立MYMATMYMAT矩阵。矩阵。 (1)(1)启启动动有有关关编编辑辑程程序序或或MATLABMATLAB文文本本编编辑辑器器,并并输输入待建矩阵入待建矩阵. . (2)(2)把把输输入入的的内内容容以以纯纯文文本本方方式式存存盘盘( (设设文文件件名名为为mymatrix.m)mymatrix.m)。 (3)(3)运运行行该该M M文文件件,就就会会自自动动建建立立一一个个名名为为MYMATMYMAT的的矩阵,可供以后使用。矩阵,可供以后使用。返回 用户能够通过用户能够通过loadload命令,将外部数据命令,将外部数据文件中的内容调入到工作空间中创建矩阵,文件中的内容调入到工作空间中创建矩阵,外部文件的扩展名为外部文件的扩展名为“.mat “.mat “5、把外部数据调入矩阵法 (打开MAT数据文件)返回 6、建立大矩阵、建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。例如大矩阵可由方括号中的小矩阵建立起来。例如 A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A); ones(size(A),A C = 1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 1 1 1 1 2 3 1 1 1 4 5 6 1 1 1 7 8 9例题例题B=ones(1,10)zeros(1,10)2:2:20 %linspace(2,20,10)1 6 5 3 1 1 3 4 7 8 5*ones(1,10)返回矩阵操作矩阵操作u取矩阵中的元素取矩阵中的元素u子矩阵寻访子矩阵寻访u增加及删除矩阵中的元素增加及删除矩阵中的元素u矩阵的旋转与变形矩阵的旋转与变形返回取矩阵中的元素取矩阵中的元素矩阵元素的标识(编号)矩阵元素的标识(编号)矩阵元素的标识(编号)矩阵元素的标识(编号)1、矩阵元素的标识、矩阵元素的标识“全下标全下标”标识标识(row-column subscripts)“单下标单下标”标识标识(linear indexing)“逻辑逻辑1”标识标识(logical Indexing)1 1、“全下标全下标”标识标识 “ “全下标全下标”标识法标识法:即指出是:即指出是“第几行,第第几行,第几列几列”的元素。的元素。 优点优点:几何概念清楚,引述简单。:几何概念清楚,引述简单。 对于二维数组(对于二维数组(矩阵矩阵)来说,)来说, “ “全下标全下标”标识由两个下标标识由两个下标组成组成:行下标行下标,列下标列下标。 格式格式:矩阵名(:矩阵名(m m, ,n n)例例:矩阵矩阵A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A(2,2)A(2,2)A(1,5)A(1,5)A(3,4)A(3,4)2 2、“单下标单下标”标识标识l l“ “单下标单下标单下标单下标(Linear Index)”(Linear Index)”标识:标识:标识:标识:l l就是就是就是就是“ “只用一个下标来指明元素在数组中的位置只用一个下标来指明元素在数组中的位置只用一个下标来指明元素在数组中的位置只用一个下标来指明元素在数组中的位置” ”。l l“ “一维编号一维编号一维编号一维编号” ”:l l先设想把二维数组的所有列,按先左后右的次序、首尾相接排先设想把二维数组的所有列,按先左后右的次序、首尾相接排先设想把二维数组的所有列,按先左后右的次序、首尾相接排先设想把二维数组的所有列,按先左后右的次序、首尾相接排成成成成“ “一维长列一维长列一维长列一维长列” ”;然后,自上往下对元素位置进行编号。;然后,自上往下对元素位置进行编号。;然后,自上往下对元素位置进行编号。;然后,自上往下对元素位置进行编号。例例:矩阵矩阵A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 (the sequence)则则 A(5), A(12),A(13)l l“单下标单下标”与与“全下标全下标”的的转换关系转换关系:l l以以以以(mn)(mn)(mn)(mn)的二维数组的二维数组的二维数组的二维数组A A A A为例,若为例,若为例,若为例,若“全下标全下标全下标全下标”元素位元素位元素位元素位置是置是置是置是“第第第第i i i i行,第行,第行,第行,第j j j j列列列列”,那么相应的,那么相应的,那么相应的,那么相应的“单下标单下标单下标单下标”为:为:为:为:l=(j-1) l=(j-1) l=(j-1) l=(j-1) m+im+im+im+i。l lMATLABMATLABMATLABMATLAB有两个指令可实现以上表示方法间的转换:有两个指令可实现以上表示方法间的转换:有两个指令可实现以上表示方法间的转换:有两个指令可实现以上表示方法间的转换:sub2indsub2indsub2indsub2ind 据全下标换算出单下标。据全下标换算出单下标。据全下标换算出单下标。据全下标换算出单下标。ind2subind2subind2subind2sub 据单下标换算出全下标。据单下标换算出全下标。据单下标换算出全下标。据单下标换算出全下标。ND = sub2ind(siz,I,J)IND = sub2ind(siz,I1,I2,.,In)3 3、“逻辑逻辑1”1”标识标识l l所谓所谓所谓所谓“逻辑逻辑逻辑逻辑1”1”1”1”标识标识标识标识 法法法法是:通过与是:通过与是:通过与是:通过与A A A A同样大小的同样大小的同样大小的同样大小的逻辑数组逻辑数组逻辑数组逻辑数组L L L L中中中中“逻辑值逻辑值逻辑值逻辑值1 1 1 1”所在的位置,指出所在的位置,指出所在的位置,指出所在的位置,指出A A A A中中中中元素的位置。元素的位置。元素的位置。元素的位置。l lL L L L的元素或是的元素或是的元素或是的元素或是0 0 0 0或是或是或是或是1 1 1 1,它是,它是,它是,它是“逻辑数组逻辑数组逻辑数组逻辑数组(Logical (Logical (Logical (Logical Array)Array)Array)Array)”。是一种特殊的数据类型。是一种特殊的数据类型。是一种特殊的数据类型。是一种特殊的数据类型。l l!注意:逻辑数组只能通过!注意:逻辑数组只能通过!注意:逻辑数组只能通过!注意:逻辑数组只能通过logical()logical()logical()logical()函数函数函数函数或逻辑运算这两种方式获得。或逻辑运算这两种方式获得。或逻辑运算这两种方式获得。或逻辑运算这两种方式获得。l l元素或是元素或是元素或是元素或是0 0 0 0或是或是或是或是1 1 1 1的矩阵并不一定是逻辑矩阵。的矩阵并不一定是逻辑矩阵。的矩阵并不一定是逻辑矩阵。的矩阵并不一定是逻辑矩阵。l l例例例例返回子矩阵寻访子矩阵寻访1 1 1 1、“全下标全下标全下标全下标”标识标识标识标识 m,nm,nm,nm,n为标量为标量为标量为标量( ( ( (Accessing Single ElementsAccessing Single Elements) ) ) ) A(m,nA(m,nA(m,nA(m,n) ) ) ) m,nm,nm,nm,n有一为冒号有一为冒号有一为冒号有一为冒号(:)(:)(:)(:)(Accessing Multiple Accessing Multiple ElementsElements) ) ) ) m,nm,nm,nm,n为行向量为行向量为行向量为行向量2 2 2 2、“单下标单下标单下标单下标”标识标识标识标识 s s s s为标量为标量为标量为标量 A(sA(sA(sA(s) s) s) s) s为冒号(为冒号(为冒号(为冒号(: : : :) s s s s为向量为向量为向量为向量3 3 3 3、“逻辑逻辑逻辑逻辑1”1”1”1”标识标识标识标识1 1 2 3 4 5 6 7 82 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 8A=n n如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第3 3 3 3行;行;行;行;n n如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第4 4 4 4列;列;列;列;n n如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第2 2 2 2到到到到6 6 6 6行,行,行,行,3 3 3 3到到到到7 7 7 7列;列;列;列;n n如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第如何获取矩阵的第1 1 1 1、2 2 2 2、7 7 7 7、8 8 8 8行,行,行,行,2 2 2 2、5 5 5 5、7 7 7 7列;列;列;列;n n如何实现矩阵第如何实现矩阵第如何实现矩阵第如何实现矩阵第1 1 1 1列和第列和第列和第列和第4 4 4 4列数据的交换;列数据的交换;列数据的交换;列数据的交换;A(3,:) A(:,end:-1:1)A(:,4)A(2:6,3:7)A(1 2 7 8,2 5 7)A(:,4 2 3 1 5:8)a= 1:8;A=a;a;a;a;a;a;a;a返回增加及删除矩阵中的元素增加及删除矩阵中的元素1 1 2 3 4 5 6 7 82 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 81 2 3 4 5 6 7 8A=“空空”数组(空阵)数组(空阵)l“空空”数组数组是是MATLAB为操作和表述需要而为操作和表述需要而专门设计的一种数组。专门设计的一种数组。l某维长度为某维长度为0或若干维长度均为或若干维长度均为0的数组都是的数组都是“空空”数组。数组。l“空空”数组的数组的功用功用:l在没有在没有“空空”数组参与的运算时,计算结果中的数组参与的运算时,计算结果中的“空空”可以合理地解释可以合理地解释“所得结果的含义所得结果的含义”;l运用运用“空空”数组对其他非空数组赋值,可以改变数数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。组的大小,但不能改变数组的维数。 利用空矩阵删除矩阵的元素利用空矩阵删除矩阵的元素l在在MATLABMATLAB中中,定定义义为为空空矩矩阵阵。给给变变量量X X赋赋空空矩阵的语句为矩阵的语句为X=X=。l注注意意,X X=与与clear clear X X不不同同,clearclear是是将将X X从从工工作作空空间间中中删删除除,而而空空矩矩阵阵则则存存在在于于工工作作空空间间,只是维数为只是维数为0 0。l将将某某些些元元素素从从矩矩阵阵中中删删除除,采采用用将将其其置置为为空空矩矩阵的方法就是一种有效的方法。阵的方法就是一种有效的方法。 返回矩阵和数组运算矩阵和数组运算 MATLAB MATLAB 以以矩矩阵阵为为基基本本的的运运算算单单元元,向向量量和和标标量量作作为为特特殊殊的的矩矩阵阵处处理理:向向量量看看作作只只有有一一行行或或一列的矩阵;一列的矩阵;标量标量看作只有一个元素的矩阵。看作只有一个元素的矩阵。 matlabmatlab支持的两种运算方式支持的两种运算方式: :l数组运算数组运算:从编程的角度考虑,对数据管理方便、:从编程的角度考虑,对数据管理方便、操作简单、形式自然和计算有效。操作简单、形式自然和计算有效。l矩阵运算矩阵运算:从数学的角度考虑,严谨推理的结果、:从数学的角度考虑,严谨推理的结果、明确而严格的数学规则。明确而严格的数学规则。 数组运算(点运算)数组运算(点运算)l数数组组运运算算:是是指指无无论论在在数数组组上上施施加加什什么么运运算算(+ +、- -、或或函函数数),总总认认为为那那种种运运算算对对被被运运算算数数组组中中的的每个元素(每个元素(ElementElement)平等地实施同样的操作。平等地实施同样的操作。MatlabMatlab是以矩阵为基本运算单元的,是以矩阵为基本运算单元的,数组作为独立的数组作为独立的计算单元实体是不存在的。计算单元实体是不存在的。数组运算数组运算是是MatlabMatlab的一种的一种运算形式运算形式,它从矩阵的单个元素出发,针对每个元素,它从矩阵的单个元素出发,针对每个元素进行的运算。进行的运算。MATLABMATLAB对对数组运算数组运算在符号上做了不同的约定,在符号上做了不同的约定,运算符运算符运算符运算符形式为:形式为:形式为:形式为:.* , ./ , . , .* , ./ , . , .* , ./ , . , .* , ./ , . , .、.l对对于于加加法法和和减减法法而而言言,矩矩阵阵运运算算和和数数组组运运算算相相同同;对对于于乘乘法法和和除除法法等等而而言言,矩矩阵阵和和数数组组的的运运算算有有着着显显著著的的不同。不同。例例矩阵的运算矩阵的运算l矩阵运算按照矩阵运算按照线性代数中基本的运算法则线性代数中基本的运算法则进行;进行;l加减运算必须在具有相同行列的矩阵之间进行;加减运算必须在具有相同行列的矩阵之间进行;l只有当只有当矩阵矩阵 A A 的列数和矩阵的列数和矩阵 B B 的行数相同时的行数相同时,才可,才可进行矩阵进行矩阵 A A 和和 B B 的的乘法运算乘法运算;l乘方运算乘方运算只有在矩阵为只有在矩阵为方阵方阵时才有意义;时才有意义;l当一个当一个矩阵矩阵和一个和一个标量标量( 11 11 的矩阵)进行运算时,的矩阵)进行运算时,其结果将是此其结果将是此标量和矩阵中的每一个元素标量和矩阵中的每一个元素“ “ 相加相加”、“ “ 相减相减”、“ “ 相乘相乘”、“ “ 相除相除”;数组运算和矩阵运算的区别数组运算和矩阵运算的区别l l从从从从外观形状外观形状外观形状外观形状和和和和数据结构数据结构数据结构数据结构上看,二维数组和(数学上看,二维数组和(数学上看,二维数组和(数学上看,二维数组和(数学中的)矩阵没有区别。中的)矩阵没有区别。中的)矩阵没有区别。中的)矩阵没有区别。l l但是,矩阵作为一种变换或映射算子的体现,但是,矩阵作为一种变换或映射算子的体现,但是,矩阵作为一种变换或映射算子的体现,但是,矩阵作为一种变换或映射算子的体现,矩矩矩矩阵运算有着明确而严格的数学规则阵运算有着明确而严格的数学规则阵运算有着明确而严格的数学规则阵运算有着明确而严格的数学规则;数组运算是;数组运算是;数组运算是;数组运算是MATLABMATLABMATLABMATLAB软件所定义的规则,其目的是为了数据管软件所定义的规则,其目的是为了数据管软件所定义的规则,其目的是为了数据管软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的理方便、操作简单、指令形式自然和执行计算的理方便、操作简单、指令形式自然和执行计算的理方便、操作简单、指令形式自然和执行计算的有效。有效。有效。有效。l l虽然数组运算尚缺乏严谨的数学推理,数组运算虽然数组运算尚缺乏严谨的数学推理,数组运算虽然数组运算尚缺乏严谨的数学推理,数组运算虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中,但它的作用和影响正随本身仍在完善和成熟中,但它的作用和影响正随本身仍在完善和成熟中,但它的作用和影响正随本身仍在完善和成熟中,但它的作用和影响正随着着着着MATLABMATLABMATLABMATLAB的发展而扩大。的发展而扩大。的发展而扩大。的发展而扩大。数组运算和矩阵运算指令对照汇总(一)数组运算和矩阵运算指令对照汇总(一)数组运算和矩阵运算指令对照汇总(一)数组运算和矩阵运算指令对照汇总(一)数数数数 组组组组 运运运运 算算算算矩矩矩矩 阵阵阵阵 运运运运 算算算算指指指指 令令令令含含含含 义义义义指指指指 令令令令含含含含 义义义义A.A.非共轭转置。相当于非共轭转置。相当于非共轭转置。相当于非共轭转置。相当于conj(A)conj(A)AA共轭转置共轭转置共轭转置共轭转置A=sA=s把标量把标量把标量把标量s s赋给赋给赋给赋给A As+Bs+B标量标量标量标量s s分别与分别与分别与分别与B B元素之和元素之和元素之和元素之和s-B,B-ss-B,B-s标量标量标量标量s s分别与分别与分别与分别与B B的元素之差的元素之差的元素之差的元素之差s.*As.*A标量标量标量标量s s分别与分别与分别与分别与A A的元素之积的元素之积的元素之积的元素之积s*As*A标量标量标量标量s s分别与分别与分别与分别与A A每个元素之积每个元素之积每个元素之积每个元素之积s./B,B.ss./B,B.ss s分别被分别被分别被分别被B B的元素除的元素除的元素除的元素除s*inv(Bs*inv(B) )B B阵的逆乘阵的逆乘阵的逆乘阵的逆乘s sA.nA.nA A的每个元素自乘的每个元素自乘的每个元素自乘的每个元素自乘n n次次次次AnAnA A为为为为方阵方阵方阵方阵时,自乘时,自乘时,自乘时,自乘n n次次次次A.pA.p对对对对A A的各元素分别求非整数幂的各元素分别求非整数幂的各元素分别求非整数幂的各元素分别求非整数幂ApAp方阵方阵方阵方阵A A的非整数乘方的非整数乘方的非整数乘方的非整数乘方p.Ap.A以以以以p p为底,分别以为底,分别以为底,分别以为底,分别以A A的元素为的元素为的元素为的元素为指数求幂值指数求幂值指数求幂值指数求幂值pApAA A阵为方阵时,标量的矩阵阵为方阵时,标量的矩阵阵为方阵时,标量的矩阵阵为方阵时,标量的矩阵乘方乘方乘方乘方A A B B对应元素相加减对应元素相加减对应元素相加减对应元素相加减A A B B矩阵相加减矩阵相加减矩阵相加减矩阵相加减数组运算和矩阵运算指令对照汇总数组运算和矩阵运算指令对照汇总数组运算和矩阵运算指令对照汇总数组运算和矩阵运算指令对照汇总数数数数 组组组组 运运运运 算算算算矩矩矩矩 阵阵阵阵 运运运运 算算算算指指指指 令令令令含含含含 义义义义指指指指 令令令令含含含含 义义义义A.*BA.*BA.*BA.*B对应元素相乘对应元素相乘对应元素相乘对应元素相乘A*BA*BA*BA*B内维相同矩阵的乘积内维相同矩阵的乘积内维相同矩阵的乘积内维相同矩阵的乘积A./BA./BA./BA./BA A A A的元素被的元素被的元素被的元素被B B B B的对应元素除的对应元素除的对应元素除的对应元素除A/BA/BA/BA/BA A A A右除右除右除右除B B B BB.AB.AB.AB.A(一定与上相同)一定与上相同)一定与上相同)一定与上相同)BABABABAA A A A左除左除左除左除B B B B(一般与右除不一般与右除不一般与右除不一般与右除不同)同)同)同)exp(A)exp(A)exp(A)exp(A)以以以以自然数自然数自然数自然数e e e e为底,分别以为底,分别以为底,分别以为底,分别以A A A A的的的的元素为指数,求幂元素为指数,求幂元素为指数,求幂元素为指数,求幂expm(Aexpm(Aexpm(Aexpm(A) ) ) )A A A A的矩阵指数函数的矩阵指数函数的矩阵指数函数的矩阵指数函数log(A)log(A)log(A)log(A)对对对对A A A A的各元素求对数的各元素求对数的各元素求对数的各元素求对数logm(Alogm(Alogm(Alogm(A) ) ) )A A A A的矩阵对数函数的矩阵对数函数的矩阵对数函数的矩阵对数函数sqrt(Asqrt(Asqrt(Asqrt(A) ) ) )对对对对A A A A的各元素求平方根的各元素求平方根的各元素求平方根的各元素求平方根sqrtm(Asqrtm(Asqrtm(Asqrtm(A) ) ) )A A A A的矩阵平方根函数的矩阵平方根函数的矩阵平方根函数的矩阵平方根函数f(A)f(A)f(A)f(A)求求求求A A A A各个元素的函数值。各个元素的函数值。各个元素的函数值。各个元素的函数值。f(.)f(.)f(.)f(.)表示为上节所列各函数表示为上节所列各函数表示为上节所列各函数表示为上节所列各函数funm(A,Ffunm(A,Ffunm(A,Ffunm(A,FN N N N)一般函数矩阵一般函数矩阵一般函数矩阵一般函数矩阵A#BA#BA#BA#BA A A A、B B B B阵对应元素间的关系运阵对应元素间的关系运阵对应元素间的关系运阵对应元素间的关系运算。算。算。算。# # # #代表关系运算符代表关系运算符代表关系运算符代表关系运算符ABABABABA A A A、B B B B阵对应元素间的逻辑运阵对应元素间的逻辑运阵对应元素间的逻辑运阵对应元素间的逻辑运算。算。算。算。# # # #代表逻辑运算符代表逻辑运算符代表逻辑运算符代表逻辑运算符A zeros(2,3);A(:) = 1:6A = A*(1+i);Aa = A.Am = A例:两种转置比较例:两种转置比较向量的基本运算向量的基本运算1 1、与数运算、与数运算2 2、点积计算、点积计算 指两个向量在其中一个向量方向上的投影的乘积。 dot(a,b) a,b必须同维。3 3、叉积、叉积 表示过两相交向量的交点的垂直于两向量所在平面的向量。 cross(a,b)4 4、混合积、混合积关系操作和逻辑操作关系操作和逻辑操作l在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非问题作出非问题作出“是真,是假是真,是假”的回答。为此的回答。为此MATLABMATLAB设计了关设计了关系操作、逻辑操作系操作、逻辑操作 和一些相关函数。和一些相关函数。lMATLABMATLAB的的约定约定:l在所有关系表达式和逻辑表达式中,作为输入的任何非在所有关系表达式和逻辑表达式中,作为输入的任何非0 0数数都被看作是都被看作是“逻辑真逻辑真”,而只有,而只有0 0才被认为是才被认为是“逻辑假逻辑假”。l所有关系表达式和逻辑表达式的计算结果,即输出,是一个所有关系表达式和逻辑表达式的计算结果,即输出,是一个由由0 0和和1 1组成的组成的“逻辑数组(逻辑数组(Logical ArrayLogical Array)”。在此数组在此数组中的中的1 1表示表示“真真”,0 0表示表示“假假”。l逻辑数组是一种特殊的数值数组。逻辑数组是一种特殊的数值数组。关系操作和逻辑操作关系操作和逻辑操作l l关系操作关系操作l l逻辑操作逻辑操作 l l关系、逻辑函数关系、逻辑函数 返回关系操作关系操作指指 令令含含 义义指指 令令含含 义义小于小于=大于等于大于等于=小于等于小于等于=等于等于大于大于=不等于不等于说明说明l标量可以与任何维数组进行比较。比较在此标量与数标量可以与任何维数组进行比较。比较在此标量与数组每个元素之间进行,因此比较结果将与被比较数组同组每个元素之间进行,因此比较结果将与被比较数组同维。维。l当比较量中没有标量时,关系符两端进行比较的数组当比较量中没有标量时,关系符两端进行比较的数组必须维数相同。比较在两数组相同位置上的元素间进行,必须维数相同。比较在两数组相同位置上的元素间进行,因此比较结果将与被比数组同维。因此比较结果将与被比数组同维。逻辑操作逻辑操作指指 令令含义含义指指 令令含义含义指指 令令含含 义义与、和与、和|或或否、非否、非说明说明l标量可以与任何维数组进行逻辑运算。运算比较在标量标量可以与任何维数组进行逻辑运算。运算比较在标量与数组每个元素之间进行,因此运算结果与参与运算的数与数组每个元素之间进行,因此运算结果与参与运算的数组同维。组同维。l当逻辑运算中没有标量时,参与运算的数组必须维数相当逻辑运算中没有标量时,参与运算的数组必须维数相同。运算在两数组相同位置上的元素间进行,因此运算结同。运算在两数组相同位置上的元素间进行,因此运算结果数组必定和参与运算的数组同维。果数组必定和参与运算的数组同维。关系、逻辑函数关系、逻辑函数lMATLABMATLAB中能给出中能给出“逻辑数组逻辑数组”类型计算结果的类型计算结果的函数有很多,包括:函数有很多,包括:关系逻辑函数关系逻辑函数、工作状态工作状态判断函数判断函数、特殊数据判断函数特殊数据判断函数、数据类型判断数据类型判断函数函数等。等。l l关系逻辑函数关系逻辑函数l l特殊数据判断指令特殊数据判断指令l l数据类型判断指令数据类型判断指令关系逻辑函数关系逻辑函数指指 令令含含 义义all(A)当向量当向量A的元素全非的元素全非0时,结果才是时,结果才是1;否则结;否则结果是果是0any(A)只要向量只要向量A中有非中有非0元素,结果才是元素,结果才是1;否则结;否则结果是果是0isequal(A,B)A,B对应元素相等时,相应元素位置取对应元素相等时,相应元素位置取1;否;否则取则取0xor(A,B)A,B对应元素同为对应元素同为0,或非,或非0时,相应元素位置时,相应元素位置取取0;否则取;否则取1特殊数据判断指令特殊数据判断指令指令指令含义含义指令指令含义含义isempty(x)x是空,则结果为是空,则结果为1isnan(x)对应对应x中非数中非数NaN元素的位元素的位置取置取1,其余均为,其余均为0isfinite(x)对应对应x中有限大小元素的位中有限大小元素的位置取置取1,其余均为,其余均为0isprime(x)对应对应x中质数元素的位置取中质数元素的位置取1,其余均为,其余均为0isinf(x)对应对应x中无穷大小元素的位中无穷大小元素的位置取置取1,其余均为,其余均为0isreal(x)对应对应x中实数元素的位置取中实数元素的位置取1,其余均为,其余均为0isletter(x)对应对应x中英文字母的元素位中英文字母的元素位置取置取1,其余均为,其余均为0isspace(x)对应对应x中空格的元素位置取中空格的元素位置取1,其余均为,其余均为0数据类型判断指令数据类型判断指令指令指令含义含义指令指令含义含义isa(x,name)输入宗量输入宗量name是指具体数据是指具体数据类型的英文名称。假如类型的英文名称。假如x是指是指定的数据类型,则结果为定的数据类型,则结果为1ishandle(x)若若x是是图柄代号图柄代号,则结果则结果为为1iscell(x)若若x是元胞,则结果为是元胞,则结果为1islogical(x)若若x是是逻辑数逻辑数,则结果为则结果为1iscellstr(x)若若x是字符串组成的元胞是字符串组成的元胞数组,则结果为数组,则结果为1isnumeric(x)若若x是数值是数值,则结果为则结果为1ischar(x)若若x是字符串,则结果为是字符串,则结果为1isobject(x)若若x是对象是对象,则结果为则结果为1isfield(x,name)若若name指定的名称是构指定的名称是构架架x的域名,则结果为的域名,则结果为1issparse(x)若若x稀疏稀疏,则结果为则结果为1isglobal(x)若若x是全局变量,结果为是全局变量,结果为1isstruct(x)若若x是构架是构架,则结果为则结果为1返回矩阵分析矩阵分析u矩阵的逆与伪逆矩阵的逆与伪逆u矩阵的秩与迹矩阵的秩与迹u方阵的行列式方阵的行列式返回矩阵的逆与伪逆 对于一个方阵对于一个方阵A A,如果存在一个与其同阶的方阵,如果存在一个与其同阶的方阵B B,使得:,使得: AB=BA=I (IAB=BA=I (I为单位矩阵为单位矩阵) )则称则称B B为为A A的逆矩阵,当然,的逆矩阵,当然,A A也是也是B B的逆矩阵。的逆矩阵。 求一个矩阵的逆是一件非常烦琐的工作,容求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在易出错,但在MATLABMATLAB中,求一个矩阵的逆非常容易。中,求一个矩阵的逆非常容易。求方阵求方阵A A的逆矩阵可调用函数的逆矩阵可调用函数inv(Ainv(A) ) 。l矩阵的伪逆矩阵的伪逆如果矩阵如果矩阵A不是一个方阵,或者不是一个方阵,或者A是一个非满是一个非满秩的方阵时,矩阵秩的方阵时,矩阵A没有逆矩阵,但可以找没有逆矩阵,但可以找到一个与到一个与A的转置矩阵的转置矩阵A同型的矩阵同型的矩阵B,使得:,使得: ABA=A BAB=B此时称矩阵此时称矩阵B为矩阵为矩阵A的伪逆,也称为广义逆的伪逆,也称为广义逆矩阵。在矩阵。在MATLAB中,求一个矩阵伪逆的函中,求一个矩阵伪逆的函数是数是pinv(A)。返回矩阵的秩与迹1 1)矩阵的秩)矩阵的秩矩阵线性无关的行数与列数称为矩阵的秩。在矩阵线性无关的行数与列数称为矩阵的秩。在MATLABMATLAB中,求矩阵秩的函数是中,求矩阵秩的函数是rank(Arank(A) )。2 2)矩阵的迹)矩阵的迹矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在矩阵的特征值之和。在MATLABMATLAB中,求矩阵的迹中,求矩阵的迹的函数是的函数是trace(Atrace(A) )。返回方阵的行列式 把一个方阵看作一个行列式,并对其把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在所对应的行列式的值。在MATLABMATLAB中,求方中,求方阵阵A A所对应的行列式的值的函数是所对应的行列式的值的函数是det(Adet(A) )。矩阵分析对角阵(对角阵( diag函数)函数)矩阵矩阵分析分析三角阵(三角阵( triu、tril、lu函数)函数)矩阵的转置(单撇号矩阵的转置(单撇号() )矩阵的旋转矩阵的旋转(rot90函数函数)eig函数函数det(A)函数函数矩阵的逆矩阵的逆(inv函数函数)矩阵的伪逆矩阵的伪逆(pinv函数函数)矩阵的秩矩阵的秩(rank(A)函数函数)矩阵的迹矩阵的迹(trace(A)函数函数返回u串数组的属性和标识 u复杂串数组的创建u串转换函数 u串操作函数 字符串(字符数组)字符串(字符数组)返回串数组的属性和标识串数组的属性和标识l演示:串的基本属性、标识和简单操作。演示:串的基本属性、标识和简单操作。l创建串数组创建串数组 l串数组的大小串数组的大小 size()size()l串数组的元素标识串数组的元素标识可把它看成是行向量可把它看成是行向量l串数组的串数组的ASCIIASCII码码double()double()、abs()abs()l对字符串对字符串ASCIIASCII码数组的操作码数组的操作对数值数组的操作对数值数组的操作l中文字符串数组中文字符串数组l创建带单引号的字符串创建带单引号的字符串每个单引号符用每个单引号符用“连续的连续的2 2个单个单引号符引号符”表示表示l由小串构成长串由小串构成长串 返回复杂串数组的创建复杂串数组的创建u多行串数组的直接创建多行串数组的直接创建u利用串操作函数创建多行串数组利用串操作函数创建多行串数组 u转换函数产生数码字符串转换函数产生数码字符串 返回多行串数组的直接创建多行串数组的直接创建l在直接创建多行串数组时,关键是要保证同一在直接创建多行串数组时,关键是要保证同一串数组的串数组的各行字符数要相等各行字符数要相等,即保证各行等长。,即保证各行等长。为此,有时不得不为此,有时不得不通过空格符的增减通过空格符的增减来调节各来调节各行的长度,使它们彼此相等。行的长度,使它们彼此相等。l例例: S=This string array : S=This string array has multiple rows.has multiple rows.增加一空格使增加一空格使增加一空格使增加一空格使两行长度相等两行长度相等两行长度相等两行长度相等返回利用串操作函数创建多行串数组利用串操作函数创建多行串数组l用用专专门门函函数数char char , , str2mat str2mat , , strvcatstrvcat创创建建多多行行串串数数组示例。组示例。lcharchar: 创创建建字字符符传传输输组组或或将将其其他他类类型型变变量量转转化化为为字字符符串串数数组组lstr2matstr2mat :将字符串转换为含有空格的数组将字符串转换为含有空格的数组lstrvcatstrvcat:创建字符串数组创建字符串数组l这这三三个个函函数数创创建建多多行行数数组组时时,不不必必担担心心每每行行字字符符数数是是否否相相等等。它它们们总总会会按按最最长长行行设设置置第第二二维维的的长长度度,其其他他行的尾部用空格填充。行的尾部用空格填充。返回转换函数产生数码字符串转换函数产生数码字符串l l最常用的数组最常用的数组/ /字符串转换函数字符串转换函数int2str , int2str , num2str , mat2str num2str , mat2str 示例。示例。l lint2strint2strint2strint2str :将:将:将:将整数转换为字符串整数转换为字符串整数转换为字符串整数转换为字符串l lnum2str num2str num2str num2str :把:把:把:把数值转换为字符串数值转换为字符串数值转换为字符串数值转换为字符串l lmat2strmat2strmat2strmat2str:将数组转换为字符串将数组转换为字符串将数组转换为字符串将数组转换为字符串l l综合例题:在综合例题:在MATLABMATLAB计算生成的图形上标出图计算生成的图形上标出图名和最大值点坐标。名和最大值点坐标。 返回四、符号运算四、符号运算1 1MatlabMatlab 符号运算介绍符号运算介绍2 2符号对象和符号表达式符号对象和符号表达式3 3符号对象的操作和转换符号对象的操作和转换Matlab Matlab 符号运算介绍符号运算介绍n什么是符号运算什么是符号运算uu与数值运算的区别与数值运算的区别 数值运算中必须先对变量赋值数值运算中必须先对变量赋值,然然后才能参与运算。后才能参与运算。 符号运算无须事先对独立变量赋值符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。运算结果以标准的符号形式表达。n实现实现l lSymbolic Math ToolboxSymbolic Math ToolboxSymbolic Math ToolboxSymbolic Math Toolbox符号运算工具符号运算工具符号运算工具符号运算工具包通过调用包通过调用包通过调用包通过调用MapleMapleMapleMaple软件实现符号计算的。软件实现符号计算的。软件实现符号计算的。软件实现符号计算的。l lmaplemaplemaplemaple软件软件软件软件主要功能是符号运算,主要功能是符号运算,主要功能是符号运算,主要功能是符号运算, 它占据符号软件的主导地位它占据符号软件的主导地位它占据符号软件的主导地位它占据符号软件的主导地位。 u 计算以计算以计算以计算以推理方式推理方式推理方式推理方式进行,因此不受计算误差累积进行,因此不受计算误差累积进行,因此不受计算误差累积进行,因此不受计算误差累积所带来的困扰。所带来的困扰。所带来的困扰。所带来的困扰。 u 符号计算指令的调用比较简单,与数学教科书符号计算指令的调用比较简单,与数学教科书符号计算指令的调用比较简单,与数学教科书符号计算指令的调用比较简单,与数学教科书上的公式相近。上的公式相近。上的公式相近。上的公式相近。u 符号计算可以给出完全正确的封闭解,或任意符号计算可以给出完全正确的封闭解,或任意符号计算可以给出完全正确的封闭解,或任意符号计算可以给出完全正确的封闭解,或任意精度的数值解(封闭解不存在时)。精度的数值解(封闭解不存在时)。精度的数值解(封闭解不存在时)。精度的数值解(封闭解不存在时)。 u 符号计算所需的运行时间相对较长。符号计算所需的运行时间相对较长。符号计算所需的运行时间相对较长。符号计算所需的运行时间相对较长。n特点:特点:返回在在MATLABMATLAB中,中,数值和数值变量数值和数值变量用于数值的存储和各种数用于数值的存储和各种数值计算,而值计算,而符号常数、符号变量、符号函数、符号操作符号常数、符号变量、符号函数、符号操作等则等则是用来形成是用来形成符号表达式符号表达式,严格按照代数、微积分等课程中的,严格按照代数、微积分等课程中的规则、公式进行运算,并尽可能给出解析表达式结果。规则、公式进行运算,并尽可能给出解析表达式结果。 二、符号对象和符号表达式二、符号对象和符号表达式n符号对象的生成和使用符号对象的生成和使用符号对象的生成和使用符号对象的生成和使用n符号对象符号对象符号对象符号对象建立建立建立建立常量、变量、表达式、矩阵常量、变量、表达式、矩阵常量、变量、表达式、矩阵常量、变量、表达式、矩阵n符号对象操作符号对象操作符号对象操作符号对象操作n识别对象类别的指令识别对象类别的指令识别对象类别的指令识别对象类别的指令n符号表达式中默认符号变量(自由变量)的确定符号表达式中默认符号变量(自由变量)的确定符号表达式中默认符号变量(自由变量)的确定符号表达式中默认符号变量(自由变量)的确定返回符号对象的生成和使用符号对象的生成和使用l l凡进行过数值计算的人都知道:数值表达式所用凡进行过数值计算的人都知道:数值表达式所用凡进行过数值计算的人都知道:数值表达式所用凡进行过数值计算的人都知道:数值表达式所用的变量必须事先被赋过值,否则该表达式无法计的变量必须事先被赋过值,否则该表达式无法计的变量必须事先被赋过值,否则该表达式无法计的变量必须事先被赋过值,否则该表达式无法计算。算。算。算。l lSymbolic Math Toolbox Symbolic Math Toolbox Symbolic Math Toolbox Symbolic Math Toolbox 沿用数值计算的这种模沿用数值计算的这种模沿用数值计算的这种模沿用数值计算的这种模式,式,式,式,规定规定规定规定:在进行符号计算时,首先要定义基本在进行符号计算时,首先要定义基本在进行符号计算时,首先要定义基本在进行符号计算时,首先要定义基本的符号对象(可以是常数、变量、表达式、矩阵)的符号对象(可以是常数、变量、表达式、矩阵)的符号对象(可以是常数、变量、表达式、矩阵)的符号对象(可以是常数、变量、表达式、矩阵),然后利用这些基本符号对象去构成新的表达式,然后利用这些基本符号对象去构成新的表达式,然后利用这些基本符号对象去构成新的表达式,然后利用这些基本符号对象去构成新的表达式,进而从事所需的符号运算。进而从事所需的符号运算。进而从事所需的符号运算。进而从事所需的符号运算。l l在运算中,凡是由包含符号对象的表达式所生成在运算中,凡是由包含符号对象的表达式所生成在运算中,凡是由包含符号对象的表达式所生成在运算中,凡是由包含符号对象的表达式所生成的衍生对象也都是符号对象。的衍生对象也都是符号对象。的衍生对象也都是符号对象。的衍生对象也都是符号对象。l l基本符号对象的定义由基本符号对象的定义由基本符号对象的定义由基本符号对象的定义由symsymsymsym、symssymssymssyms指令来实现指令来实现指令来实现指令来实现 u 符号变量与符号表达式符号变量与符号表达式f = sym(sin(x)+5x)f 符号变量名sin(x)+5x 符号表达式 符号标识vv符号表达式一定要用符号表达式一定要用 单引单引 号括起来号括起来matlabmatlab才能识别。才能识别。符号对象符号对象的建立的建立q符号对象的建立:符号对象的建立:sym 和和 symssyms1 1、符号常量、符号常量、符号常量、符号常量l l符号常量是不含变量的符号表达式,用符号常量是不含变量的符号表达式,用符号常量是不含变量的符号表达式,用符号常量是不含变量的符号表达式,用symsym命令来创建命令来创建命令来创建命令来创建l l语法:语法:语法:语法:sym(sym(常量常量常量常量) )sym(sym(常量常量常量常量, ,参数参数参数参数) %) %按某种格式转换为符号常量按某种格式转换为符号常量按某种格式转换为符号常量按某种格式转换为符号常量 l l说明:参数可以选择为说明:参数可以选择为说明:参数可以选择为说明:参数可以选择为 dd、 f f、 ee或或或或 r r 四种格式,也可省略。四种格式,也可省略。四种格式,也可省略。四种格式,也可省略。2 2、符号变量、符号变量语法:语法:sym(变量变量,参数参数) %把变量定义为符号对象把变量定义为符号对象单个符号变量单个符号变量syms(arg1, arg2, ,参数参数) syms arg1 arg2 ,参数参数 用这种格式定义符号变量时不要在变量用这种格式定义符号变量时不要在变量名上加字符分界符名上加字符分界符()(),变量间用空格而不要,变量间用空格而不要用逗号分隔。用逗号分隔。多个多个3 3 3 3、符号表达式、符号表达式、符号表达式、符号表达式(1)(1)(1)(1)用用用用 sym sym sym sym 函数直接建立符号表达式。函数直接建立符号表达式。函数直接建立符号表达式。函数直接建立符号表达式。(2)(2)(2)(2)使用已经定义的符号变量组成符号表达式使用已经定义的符号变量组成符号表达式使用已经定义的符号变量组成符号表达式使用已经定义的符号变量组成符号表达式4 4 4 4、符号矩阵、符号矩阵、符号矩阵、符号矩阵 (1)(1)(1)(1)用用用用symsymsymsym创建矩阵创建矩阵创建矩阵创建矩阵直接创建直接创建直接创建直接创建(2)(2)(2)(2)使用已定义的符号对象构成符号矩阵的元素使用已定义的符号对象构成符号矩阵的元素使用已定义的符号对象构成符号矩阵的元素使用已定义的符号对象构成符号矩阵的元素返回识别对象类别的指令识别对象类别的指令 l数值计算对象、符号计算对象、字符串是数值计算对象、符号计算对象、字符串是MATLAB中最常遇到的数据对象。它们遵循中最常遇到的数据对象。它们遵循着各自不同的运算法则,但有时在外形上却着各自不同的运算法则,但有时在外形上却十分相似。为管理和使用方便,十分相似。为管理和使用方便,MATLAB提提供了一些识别不同数据对象的指令,常用的供了一些识别不同数据对象的指令,常用的有有class,isa,whos等。等。l例:数据对象及其识别指令的使用。例:数据对象及其识别指令的使用。返回符号表达式中默认符号变量符号表达式中默认符号变量(自由变量)的确定(自由变量)的确定 l l为为为为符号操作和计算的需要,符号操作和计算的需要,符号操作和计算的需要,符号操作和计算的需要,MATLABMATLABMATLABMATLAB提供一个提供一个提供一个提供一个findsymfindsymfindsymfindsym指令,可实现对表达式中所有自由符号变量或指定数指令,可实现对表达式中所有自由符号变量或指定数指令,可实现对表达式中所有自由符号变量或指定数指令,可实现对表达式中所有自由符号变量或指定数目的独立自变量的自动认定。目的独立自变量的自动认定。目的独立自变量的自动认定。目的独立自变量的自动认定。findsym(EXPRfindsym(EXPRfindsym(EXPRfindsym(EXPR) ) ) )确认表达式确认表达式确认表达式确认表达式EXPREXPREXPREXPR中所有中所有中所有中所有“自由自由自由自由”符号符号符号符号“变量变量变量变量”findsym(EXPR,Nfindsym(EXPR,Nfindsym(EXPR,Nfindsym(EXPR,N) ) ) ) 从表达式从表达式从表达式从表达式EXPREXPREXPREXPR中确认出靠中确认出靠中确认出靠中确认出靠x x x x最近的最近的最近的最近的N N N N个独立自变量。个独立自变量。个独立自变量。个独立自变量。l l注注注注:l lEXPREXPREXPREXPR可以是符号矩阵。此时,该指令对自由变量的确认是对整个可以是符号矩阵。此时,该指令对自由变量的确认是对整个可以是符号矩阵。此时,该指令对自由变量的确认是对整个可以是符号矩阵。此时,该指令对自由变量的确认是对整个矩阵进行的,而不是对矩阵元素逐个进行的。矩阵进行的,而不是对矩阵元素逐个进行的。矩阵进行的,而不是对矩阵元素逐个进行的。矩阵进行的,而不是对矩阵元素逐个进行的。l l按照自然科学中的习惯,按照自然科学中的习惯,按照自然科学中的习惯,按照自然科学中的习惯,findsym(EXPR,Nfindsym(EXPR,Nfindsym(EXPR,Nfindsym(EXPR,N) ) ) )把把把把EXPREXPREXPREXPR表达式中表达式中表达式中表达式中N N N N个最个最个最个最靠近靠近靠近靠近x x x x的自由符号变量确认为的自由符号变量确认为的自由符号变量确认为的自由符号变量确认为“独立自由变量独立自由变量独立自由变量独立自由变量”。注意字母的大小。注意字母的大小。注意字母的大小。注意字母的大小写。在此认为大写字母离小写写。在此认为大写字母离小写写。在此认为大写字母离小写写。在此认为大写字母离小写x x x x的距离总大于所有小写字母离的距离总大于所有小写字母离的距离总大于所有小写字母离的距离总大于所有小写字母离x x x x的的的的距离。距离。距离。距离。返回三、符号对象的操作和转换三、符号对象的操作和转换n n符号表达式的操作符号表达式的操作符号表达式的操作符号表达式的操作n n置换操作置换操作置换操作置换操作n n符号对象与其它数据对象间的转换符号对象与其它数据对象间的转换符号对象与其它数据对象间的转换符号对象与其它数据对象间的转换n n符号任意精度的控制和运算符号任意精度的控制和运算符号任意精度的控制和运算符号任意精度的控制和运算n n符号矩阵的操作符号矩阵的操作符号矩阵的操作符号矩阵的操作返回(一)符号表达式的操作(一)符号表达式的操作l符号运算中有许多操作指令,如符号运算中有许多操作指令,如collectcollect(合并同类合并同类项)、项)、expandexpand(对指定项展开)、对指定项展开)、factorfactor(进行因式进行因式或因子分解)、或因子分解)、hornerhorner(转换成嵌套形式)、转换成嵌套形式)、numdennumden(提取公因式)、提取公因式)、simplifysimplify(恒等式简化)、恒等式简化)、prettypretty(习惯方式显示)等,其中最常用的是习惯方式显示)等,其中最常用的是lsimple(EXPR)simple(EXPR)运用包括运用包括simplifysimplify在内的各种指令在内的各种指令把把EXPREXPR转换成最简短形式转换成最简短形式l注:注:EXPREXPR可以是符号表达式或矩阵。在这种情况下,可以是符号表达式或矩阵。在这种情况下,这些指令将对该矩阵的元素逐个进行操作。这些指令将对该矩阵的元素逐个进行操作。返回(二)置换操作(二)置换操作l子子表达式置换操作表达式置换操作 l符号计算结果显得烦冗的一个重要原因是:有些子表达式符号计算结果显得烦冗的一个重要原因是:有些子表达式会多次出现在不同地方。会多次出现在不同地方。l为了使表达式简洁易读,为了使表达式简洁易读,MATLABMATLAB提供了如下指令:提供了如下指令:l RS,ssubRS,ssub=subexpr(S,ssubsubexpr(S,ssub) )运用符号变量运用符号变量ssubssub置换子表达式,重写置换子表达式,重写S S为为RSRS。l例:把复杂表达式中所含的多个相同子表达式用一个符号例:把复杂表达式中所含的多个相同子表达式用一个符号代替,使表达简洁。代替,使表达简洁。l置换原则:只有比较长的子表达式才被置换;至于比较短置换原则:只有比较长的子表达式才被置换;至于比较短的子表达式,即便多次重复出现,也不被置换的子表达式,即便多次重复出现,也不被置换。l通用置换指令通用置换指令RES=subs(ES,old,new)用用new置置换换ES中的中的old后产生后产生RESRES=subs(ES, new)用用new置置换换ES中的自由变量后产生中的自由变量后产生RES返回(三)符号对象与其它数据对象间的转换(三)符号对象与其它数据对象间的转换 l数值、符号、字符是数值、符号、字符是MATLABMATLAB中的三种不同的数据类型。中的三种不同的数据类型。lMATLABMATLAB为每种数据类型提供了各自特定的生成指令和操作为每种数据类型提供了各自特定的生成指令和操作指令。指令。l为实现不同数据类型的交互,为实现不同数据类型的交互,MATLABMATLAB提供了一系列的转换提供了一系列的转换指令。指令。 数值型数值型符号结果符号结果符号常数符号常数 符号量(表达式)符号量(表达式)数值数值字符串(表达式)字符串(表达式)ASCII码码vpavpadoubledoublesymcharsymdoublecharstr2num str2double sscanfint2str num2str mat2str sprintf返回(四)、符号任意精度的控制和运算(四)、符号任意精度的控制和运算 在在在在symbolicsymbolic中有三种不同的算术运算:中有三种不同的算术运算:中有三种不同的算术运算:中有三种不同的算术运算:1.1.数值类型数值类型数值类型数值类型 matlabmatlab的浮点算术运算的浮点算术运算的浮点算术运算的浮点算术运算2.2.有理数类型有理数类型有理数类型有理数类型 maplemaple的的的的精确符号运算精确符号运算精确符号运算精确符号运算3.3.vpavpa类型类型类型类型 maplemaple的任意精度算术的任意精度算术的任意精度算术的任意精度算术 运算运算运算运算 l l浮点算术运算浮点算术运算浮点算术运算浮点算术运算1/2+1/3 1/2+1/3 ( (定义输出格式定义输出格式定义输出格式定义输出格式format long)format long)ans =ans =0.833333333333330.83333333333333l l符号运算符号运算符号运算符号运算sym(1/2+1/3)sym(1/2+1/3)ans =ans = 5/6 5/6 精确解精确解精确解精确解 l l任意精度算术运算任意精度算术运算digits(n) 设置可变精度,缺省设置可变精度,缺省32位位vpa(s,n) 显示可变精度计算显示可变精度计算digits(25)vpa(1/2+1/3)ans =.8333333333333333333333333vpa(5/6,40) ans =.8333333333333333333333333333333333333333 a=sym(1/4,exp(1);log(3),3/7)a = 1/4,exp(1)log(3), 3/7vpa(a,10)ans =.2500000000, 2.7182818281.098612289, .4285714286返回符号矩阵操作符号矩阵操作u 符号矩阵元素的寻访符号矩阵元素的寻访u 符号矩阵修改符号矩阵修改u 符号矩阵的运算符号矩阵的运算返回符号矩阵元素的寻访同数值数组1 1 1 1、“全下标全下标全下标全下标”标识标识标识标识 m,nm,nm,nm,n为标量为标量为标量为标量 ( ( ( (Accessing Single ElementsAccessing Single Elements) ) ) ) S(m,nS(m,nS(m,nS(m,n) ) ) ) m,nm,nm,nm,n有一为冒号有一为冒号有一为冒号有一为冒号(:)(:)(:)(:)(Accessing Multiple ElementsAccessing Multiple Elements) ) ) ) m,nm,nm,nm,n为行向量为行向量为行向量为行向量2 2 2 2、“单下标单下标单下标单下标”标识标识标识标识 l l l l为标量为标量为标量为标量 S(lS(lS(lS(l) l) l) l) l为冒号(为冒号(为冒号(为冒号(: : : :) l l l l为向量为向量为向量为向量3 3 3 3、“逻辑逻辑逻辑逻辑1”1”1”1”标识标识标识标识符号矩阵修改1、直接修改直接修改使用数组编辑器使用数组编辑器2、指令修改、指令修改用A1=subs(A, new, old)来修改3、赋值赋值A(m,n)=BA(m,n)与与B必须大小相同必须大小相同A(s)=BA(s)与与B只要元素个数相同只要元素个数相同A(L)=B同上同上符号矩阵的代数运算l符号矩阵的四则运算符号矩阵的四则运算lMatlab 5.x 抛弃了在抛弃了在4.2版中为符号矩阵设计版中为符号矩阵设计的复杂函数形式,把符号矩阵的四则运算简化的复杂函数形式,把符号矩阵的四则运算简化为与数值矩阵完全相同的运算方式,其运算符为与数值矩阵完全相同的运算方式,其运算符为:加(),减()、乘(为:加(),减()、乘()、除()、除(/、)等或符号矩阵的数组运算乘()等或符号矩阵的数组运算乘(.*)、除()、除(./、.)等。)等。 符号矩阵的其他一些基本运算包括转置符号矩阵的其他一些基本运算包括转置()、行列式()、行列式(det)、逆()、逆(inv)、秩)、秩(rank)、幂()、幂()和指数()和指数(exp和和expm)等)等都与数值矩阵相同都与数值矩阵相同五、五、M M文件设计文件设计l lmatlabmatlab语言称为第四代编程语言,程序简洁、可读性语言称为第四代编程语言,程序简洁、可读性语言称为第四代编程语言,程序简洁、可读性语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。很强而且调试十分容易。很强而且调试十分容易。很强而且调试十分容易。l l是是是是matlabmatlab重要组成部分。重要组成部分。重要组成部分。重要组成部分。l l用户如想灵活应用用户如想灵活应用用户如想灵活应用用户如想灵活应用matlabmatlab去解决实际问题,充分调用去解决实际问题,充分调用去解决实际问题,充分调用去解决实际问题,充分调用matlabmatlab的科学技术资源,就需要编辑的科学技术资源,就需要编辑的科学技术资源,就需要编辑的科学技术资源,就需要编辑mm文件文件文件文件l l包含包含包含包含matlabmatlab语言代码的文件称为语言代码的文件称为语言代码的文件称为语言代码的文件称为mm文件,其扩展名为文件,其扩展名为文件,其扩展名为文件,其扩展名为mm。l l编辑编辑编辑编辑mm文件可使用各种文本编辑器文件可使用各种文本编辑器文件可使用各种文本编辑器文件可使用各种文本编辑器5.1 M文件文件 mm文件的语法类似于文件的语法类似于文件的语法类似于文件的语法类似于c c语言,但又有其自身特点。它语言,但又有其自身特点。它语言,但又有其自身特点。它语言,但又有其自身特点。它只是一个简单的只是一个简单的只是一个简单的只是一个简单的ASCIIASCII码文本文件,执行程序时逐行解释码文本文件,执行程序时逐行解释码文本文件,执行程序时逐行解释码文本文件,执行程序时逐行解释运行程序,运行程序,运行程序,运行程序,matlabmatlab是解释性的编程语言。是解释性的编程语言。是解释性的编程语言。是解释性的编程语言。5.1.1 M文件的建立与编辑文件的建立与编辑1.建立新的建立新的M文件文件(1)菜单操作:菜单操作:MATLAB命令窗口的命令窗口的File菜单菜单 New菜单菜单项项 M-file命令。命令。(2)命令操作:在命令操作:在MATLAB命令窗口输入命令命令窗口输入命令edit。(3)命令按钮操作:单击命令按钮操作:单击MATLAB命令窗口工具栏上的命令窗口工具栏上的“新建新建”命令按钮。命令按钮。 2. 编辑已有的编辑已有的M文件文件 5.1.2 M文件的分类分类: m文件有两类:文件有两类:独立的独立的m文件文件 称命令文件(称命令文件( Script File脚本文件)脚本文件)可调用可调用m文件文件 称函数文件称函数文件(Function File)主要区别。主要区别。 例5.1 建立一个命令文件将变量a,b的值互换,然后运行该命令文件。 首先建立命令文件并以文件名exch.m存盘: clear; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。 例5.2 建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。 首先建立函数文件fexch.m: function a,b=fexch(a,b) c=a;a=b;b=c; 然后在MATLAB的命令窗口调用该函数文件: clear; x=1:10; y=reshape(1:16,4,4); x,y=fexch(x,y)5.2、程序的结构、程序的结构与与C语言类似,语言类似,MATLAB程序的控制结构也分为顺序结构、程序的控制结构也分为顺序结构、选择结构和循环结构三种,其控制语句主要有选择结构和循环结构三种,其控制语句主要有if,switch ,for,while四个,下面分别进行介绍。四个,下面分别进行介绍。1、if 分支结构分支结构格式格式1:if end格式格式2:if elseend格式格式3:if elseif elseif elseend例例2:对于下述分段函数,用键盘输入变量的值,计算其:对于下述分段函数,用键盘输入变量的值,计算其相应的函数值相应的函数值 x=input(input the value of x:)if x1 y=1endif (x0) & (x=1) y=xendif x1 y=1elseif x0 y=xelse y=0end用一般分支结构用一般分支结构用嵌套结构用嵌套结构Matlab程序:程序: ch204.mMatlab程序:程序: ch205.m2、switch 分支结构分支结构格式:格式:switch case case case otherwise end注:当表达式的值为注:当表达式的值为“值值1”时,执行时,执行“语语句组句组1”,当表达式的,当表达式的值为值为“值值2”时,执行时,执行“语句组语句组2”;并依次;并依次类推,若所有的条件类推,若所有的条件都不成立,则执行都不成立,则执行“语句组语句组n+1”;执行完执行完后,执行后,执行end后面的后面的语句。语句。例例3:输入一个数,判断它是否能被:输入一个数,判断它是否能被5整除。整除。n=input(输入输入n);switch mod(n,5) case 0 fprintf(%d可被可被5整除整除,n) otherwise fprintf(%d不能被不能被5整除整除,n)endMatlab程序:程序: ch206.m3、for 循环结构循环结构for循环允许一组命令以固定的和预定的次数重复。循环允许一组命令以固定的和预定的次数重复。格式:格式:for i初值:增量:终值初值:增量:终值 语句语句1 语句语句nendfor循环也可以嵌套使用循环也可以嵌套使用例例4:求:求12+100的和。的和。sum=0for i=1:100 sum=sum+i;endsum例例5:设计九九乘法表。:设计九九乘法表。for i=1:9 for j=1:9 a(i,j)=i*j ; endendMatlab程序:程序: ch207.mMatlab程序:程序: ch208.m4、while循环结构循环结构格式:格式:while循环一般用于事先不能确定循环次数的情况。也循环一般用于事先不能确定循环次数的情况。也可以嵌套使用。可以嵌套使用。while 逻辑表达式逻辑表达式 循环体语句循环体语句end只要表达式的值为只要表达式的值为1(真),就执行(真),就执行while与与end之间之间的语句体,直到表达式的值为的语句体,直到表达式的值为0(假)时终止该循环。(假)时终止该循环。例例6:求:求1100的偶数和的偶数和x=0;sum=0;while x101 sum=sum+x; x=x+2;endsumMatlab程序:程序: ch209.m5.3、程序的流程控制、程序的流程控制1、continue命令命令continue语句通常用于语句通常用于for或或while循环体中,作用就是终循环体中,作用就是终止一次循环的执行,当止一次循环的执行,当if 条件满足时,跳过本次循环未执条件满足时,跳过本次循环未执行的语句,直接去执行下一次循环。行的语句,直接去执行下一次循环。2、break命令命令break语句也常用于语句也常用于for或或while循环体中,与循环体中,与if一同使用,一同使用,当当if后的表达式为真时,就跳出当前的循环后的表达式为真时,就跳出当前的循环例例7:a=3; b=6; for i=1:3 b=b+1 if i2 continue end a=a+2 end输出:输出:b=7 b=8 a=5 b=9 a=7例例8:a=3; b=6; for i=1:3 b=b+1 if i”变为“K”,用户可以进行相应的操作。l在函数头前加“%”,这样就将函数式M文件变为脚本式M文件,而脚本式M文件运行时,其工作区间就是MATLAB 7的工作区间,这样在出现错误的时候就可以查询这个工作区间。错误的识别和程序调试错误的识别和程序调试l错误识别函数及其功能 函函 数数 名名 功功 能能 描描 述述echo在函数运行时显示代码在函数运行时显示代码disp显示特定的值或信息显示特定的值或信息sprintf&fprintf显示不同格式和类型的数据显示不同格式和类型的数据whos列出工作区间的所有变量列出工作区间的所有变量size显示矩阵的维数显示矩阵的维数keyboard中断程序运行,允许用户从键盘进行交互操作中断程序运行,允许用户从键盘进行交互操作return回复回复keyboard命令后函数的运行命令后函数的运行warning显示特定的警告信息显示特定的警告信息error显示特定的错误信息显示特定的错误信息错误的识别和程序调试错误的识别和程序调试l程序断点的设置 函函 数数描描 述述dbstop用于在用于在M文件中设置断点文件中设置断点dbstatus显示断点信息显示断点信息dbtype显示显示M文件文本文件文本dbstep该函数用于从断点处继续执行该函数用于从断点处继续执行M文件文件dbstack显示显示M文件执行时调用的堆栈文件执行时调用的堆栈dbup/dbdowm实现工作区间的切换实现工作区间的切换dbquit结束调试状态结束调试状态(3)程序优劣的分析)程序优劣的分析l在在MATLAB 7语言中,使用语言中,使用profile函数以及计时函数函数以及计时函数tic和和toc来分析程序中各个部分的耗时情况,从而帮来分析程序中各个部分的耗时情况,从而帮助用户找出程序中需要改进的地方。其中助用户找出程序中需要改进的地方。其中profile在计在计算相对耗时以及查找文件执行过程中瓶颈问题时更为算相对耗时以及查找文件执行过程中瓶颈问题时更为有效,而有效,而tic和和toc函数在计算绝对耗时时更为有效。函数在计算绝对耗时时更为有效。 (2)程序优化的技巧)程序优化的技巧 l程序的向量化操作程序的向量化操作 l循环运算是循环运算是MATLAB中的最大弱点,在程序设计中,中的最大弱点,在程序设计中,应当尽量避免使用循环运算。用户可以通过将应当尽量避免使用循环运算。用户可以通过将M文文件向量化来优化件向量化来优化M文件,所谓向量化就是使用向量文件,所谓向量化就是使用向量和矩阵运算来代替和矩阵运算来代替for循环和循环和while循环。循环。 l数据的预定义数据的预定义 l使用使用for循环和循环和while循环来增加数据结构的大小时,循环来增加数据结构的大小时,将影响系统和内存的使用。提高效率的可行办法是将影响系统和内存的使用。提高效率的可行办法是进行预定义,进行预定义, 函数可作为变量来使用函数可作为变量来使用l l内联函数内联函数l l函数句柄函数句柄l l匿名函数匿名函数内联函数(内联函数(inline function)inline(string,arg1,arg2,)查看查看创建创建获取变量的信息获取变量的信息数组运算数组运算执行内联函数执行内联函数feval内内联联函函数数ff = vectorize(inline_fun)返回l内联函数的创建内联函数的创建 inline(string,arg1,arg2,) inline(string,arg1,arg2,) % %创创建建内内联联函函数数l说说明明:stringstring必必须须是是不不带带赋赋值值号号(“=”)(“=”)的的字字符符串串;arg1arg1和和arg2arg2是函数的输入变量。是函数的输入变量。【例例5.195.19】创建内联函数。创建内联函数。 f=inline(sin(x)*exp(-z*x),x,z) f=inline(sin(x)*exp(-z*x),x,z) y=f(5,0.3) y=f(5,0.3) % %调用函数调用函数f fy =y = -0.2140 -0.2140返回l查看内联函数查看内联函数获取变量的信息获取变量的信息 whos f Name Size Bytes Class f 1x1 896 inline objectGrand total is 73 elements using 896 bytes char(f)ans =sin(x)*exp(-z*x) class(f)ans =inline argnames(f)ans = x z返回l使内联函数使用于数组运算使内联函数使用于数组运算vectorize(inline_fun) x = linspace(0,pi,10); z = linspace(-2,2,10); f(x,z)? Error using = inlineevalError in inline expression = sin(x)*exp(-z*x)? Error using = mtimesInner matrix dimensions must agree.Error in = inline.subsref at 25 INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr); ff=vectorize(f)ff = Inline function: ff(x,z) = sin(x).*exp(-z.*x) ff(x,z)ans = Columns 1 through 6 0 0.5887 1.3962 1.7407 1.3431 0.6682 Columns 7 through 10 0.2144 0.0426 0.0044 0.0000 f1=inline(sin(x).*exp(-z.*x),x,z) f1 = Inline function: f1(x,z) = sin(x).*exp(-z.*x) f1(x,z)返回l执行内联函数执行内联函数fevaly1, y2, . = feval(fhandle, x1, ., xn)y1, y2, . = feval(function, x1, ., xn) y=feval(f1,x,z)返回七、函数句柄七、函数句柄(Function Handles)l变量不仅可以用来表示数值变量不仅可以用来表示数值( (如如: 1, 0.2, -: 1, 0.2, -5), 5), 用来表示字符串用来表示字符串( (如如: : t t, , casinocasino), ), 也可以用来表示函数也可以用来表示函数。函函数句柄数句柄 函数句柄的创建和显示函数句柄的创建和显示函数句柄的调用和操作函数句柄的调用和操作函数句柄与函数名字符串转换函数句柄与函数名字符串转换匿名函数匿名函数 (字符串句柄)(字符串句柄)返回函数句柄的创建和显示l创建lh_fun=fun %创建函数句柄创建函数句柄lh_fun=str2func(fun) %创建函数句柄创建函数句柄l显示l函数句柄的内容通过函数句柄的内容通过functionslfunctions(f_h)l例: f_h=plotf_h = plot f_h=str2func(plot)f_h = plot functions(f_h)ans = function: plot type: simple file: MATLAB built-in function返回函数句柄的调用和操作可通过函数可通过函数feval进行函数句柄的调用进行函数句柄的调用ly1, y2, . = feval(fhandle, x1, ., xn)ly1, y2, . = feval(function, x1, ., xn) feval(函数句柄)函数句柄) f_h1=peaks; feval(f_h1)l feval(函数句柄,参数列表)函数句柄,参数列表) f_h=plot; feval(f_h,0:10,sin(0:10)返回函数句柄与函数名字符串转换函数句柄与函数名字符串转换func2str 函数名字符串转换函数句柄函数名字符串转换函数句柄 funh=str2func(det) funh = det str2func 函数句柄转换函数名字符串函数句柄转换函数名字符串 func2str(funh) ans = det返回匿名函数 (字符串句柄)l匿名函数是匿名函数是MATLAB 7.0MATLAB 7.0版提出的一种全新的函数描述版提出的一种全新的函数描述形式,其基本格式为形式,其基本格式为: : f=(f=(变量列表变量列表) )函数内容函数内容 例:创建函数例:创建函数 的函数句柄。的函数句柄。 f = (x,y)sin(x.2 + y.2)f = (x,y)sin(x.2 + y.2) z = feval(f,x,y)z = Columns 1 through 8 0 0.4514 0.6479 -0.8333 -0.5744 -0.3439 -0.9611 -0.3059 Columns 9 through 10 0.9984 -0.4303l该函数允许直接使用该函数允许直接使用MATLABMATLAB工作空间中的变量。工作空间中的变量。所以使得数学函数的定义更加方便。其效率似乎所以使得数学函数的定义更加方便。其效率似乎比比inlineinline更高。更高。 字字符串形式存在的函数表达式如何转化成匿名函数?符串形式存在的函数表达式如何转化成匿名函数? a = (x+y)2;f = eval( sprintf(x,y) %s, a );f=eval(strcat(x,y),a)f=eval(x,y),a)返回六、图形绘制六、图形绘制n n引导引导n n二维曲线绘图的基本操作二维曲线绘图的基本操作n n三维绘图的基本操作三维绘图的基本操作n n函数绘图的简捷指令函数绘图的简捷指令 引导引导 u离散数据和离散函数的可视化离散数据和离散函数的可视化 u连续函数的可视化连续函数的可视化u可视化的一般步骤可视化的一般步骤 离散数据和离散函数的可视化离散数据和离散函数的可视化l众所周知,任何二元实数标量对(众所周知,任何二元实数标量对(xa,ya)可用平面可用平面上的一个点表式;任何二元实数向量对(上的一个点表式;任何二元实数向量对(x,y)可可用平面上的一组点表示。用平面上的一组点表示。l对于离散实函数对于离散实函数yn=f(xn),当,当 xn以递增(或递减)以递增(或递减)次序取值时,根据函数关系可求得同样数目的次序取值时,根据函数关系可求得同样数目的yn,用向量形式可记述为用向量形式可记述为x=x1,x2,xNT, y=y1,y2,yNT。当把这向量对用直角坐标中的点当把这向量对用直角坐标中的点序列图示时,就实现了序列图示时,就实现了离散函数的可视化离散函数的可视化。l注意:图形不能表现无限区间上的函数关系。注意:图形不能表现无限区间上的函数关系。连续函数的可视化l与与离散函数可视化一样,进行连续函数可视化也必须先在离散函数可视化一样,进行连续函数可视化也必须先在一组离散自变量上计算相应的函数值,并把这一组一组离散自变量上计算相应的函数值,并把这一组“数据数据对对”用点图示。但这些离散的点不能表现函数的连续性。用点图示。但这些离散的点不能表现函数的连续性。l为了进一步表示离散点之间的函数情况,有两种为了进一步表示离散点之间的函数情况,有两种常用处理常用处理方法:方法:l对区间进行更细的分割,计算更多的点,去近似表现函数的对区间进行更细的分割,计算更多的点,去近似表现函数的连续变化;连续变化;l把两点用直线连接,近似表现两点间的(一般是非线性的)把两点用直线连接,近似表现两点间的(一般是非线性的)函数性状。函数性状。l在在MATLAB中,以上两种表现方法都可以采用。中,以上两种表现方法都可以采用。l注意:倘若自变量的采样点数不足够多,则无论哪种方法注意:倘若自变量的采样点数不足够多,则无论哪种方法都不能真实地反映原函数。都不能真实地反映原函数。l例:用图形表示连续调制波形例:用图形表示连续调制波形y=sin(t)sin(9t)y=sin(t)sin(9t)。 可视化的一般步骤(可视化的一般步骤(1 1)(表)(表4.14.1)步步 骤骤典典 型型 指指 令令1准准备备绘绘图图数数据据曲线数据准备曲线数据准备l先取一个参变量采样向量先取一个参变量采样向量l然后计算各坐标数据向量然后计算各坐标数据向量t=pi*(0:100)/100; %参变量采样向量参变量采样向量x=f1(t);y=f2(t);z=f3(t);三维曲面数据三维曲面数据l产生自变量采样向量产生自变量采样向量l产生自变量产生自变量“格点格点”矩阵矩阵l计算自变量计算自变量“格点格点”矩阵相矩阵相应的函数值矩阵应的函数值矩阵x=x1:dx:x2; %自变量采样向量自变量采样向量y=y1:dy:y2; %自变量采样向量自变量采样向量X,Y=meshgrid(x,y); %格点矩阵格点矩阵Z=f(X,Y); %计算函数矩阵计算函数矩阵可视化的一般步骤(2)步步 骤骤典典 型型 指指 令令2选定图形窗及子图位置:选定图形窗及子图位置:l缺省时,打开缺省时,打开Figure No.01,或当前窗,当前子图或当前窗,当前子图l可用指令指定图形窗号和子可用指令指定图形窗号和子图号图号figure(1) %指定指定1号图形窗号图形窗subplot(2,2,3) %指定三号子图指定三号子图3调用二维、三维曲线绘图指调用二维、三维曲线绘图指令:令:线型、色彩、数据点形线型、色彩、数据点形plot(x,y,r:) %用红虚点画二维线用红虚点画二维线plot3(x,y,z,b-) %用兰色实线画曲线用兰色实线画曲线调用三维曲面绘图指令调用三维曲面绘图指令mesh(X,Y,Z)可视化的一般步骤(可视化的一般步骤(3 3)步步 骤骤典典 型型 指指 令令4设置轴的范围、坐设置轴的范围、坐标分格线标分格线axis(x1,x2,y1,y2) %平面坐标范围平面坐标范围axis(x1,x2,y1,y2,z1,z2) %三维坐标范围三维坐标范围grid on %坐标分格线坐标分格线5图形注释:图形注释:图名、坐标名、图图名、坐标名、图例、文字说明例、文字说明tiitle(调制波形调制波形) %图名图名xlabel(t);ylabel(y) %轴名轴名legend(sin(t),sin(t)sin(9t) %图例图例text(2,0.5,y=sin(t)sin(9t) %文字说明文字说明6着色、明暗、灯光、着色、明暗、灯光、材质处理(仅对三材质处理(仅对三维图形使用)维图形使用)colomap,shading,light,material可视化的一般步骤(可视化的一般步骤(4 4)步步 骤骤典典 型型 指指 令令7视点、三度(横、纵、高)视点、三度(横、纵、高)比(仅对三维图形使用)比(仅对三维图形使用)view,aspect8图形的精细操作(图柄操作)图形的精细操作(图柄操作):l利用对象属性值设置利用对象属性值设置l利用图形窗工具条进行利用图形窗工具条进行get,set9打印打印l图形窗上的直接打印选项图形窗上的直接打印选项或按键或按键l利用图形后处理软件打印利用图形后处理软件打印%采用图形窗选项或按键打印最采用图形窗选项或按键打印最简捷简捷print dps2 %专业质量打印指令专业质量打印指令二维曲线绘图的基本操作 l一、一、基本绘图函数基本绘图函数l二、二、曲线的色彩、线型和数据点形曲线的色彩、线型和数据点形l三、三、坐标、刻度和分格线控制坐标、刻度和分格线控制l四、四、图形标识图形标识l五、五、多次叠绘、双纵坐标和多子图多次叠绘、双纵坐标和多子图l六、六、交互式图形指令交互式图形指令l七、七、其他二维绘图函数其他二维绘图函数一、基本绘图函数l1、plot的基本调用格式的基本调用格式(二维曲线绘图)二维曲线绘图)l2、对数坐标绘图对数坐标绘图l3、极坐标绘图极坐标绘图l4、复数绘图复数绘图plot的基本调用格式lplot(X,s)plot(X,s)lX X可以是实向量、实矩阵、复数矩阵可以是实向量、实矩阵、复数矩阵ls s是用来指定线型、色彩、数据点形的选项字符串。它可以是用来指定线型、色彩、数据点形的选项字符串。它可以缺省,此时线形、色彩将由缺省,此时线形、色彩将由MATLABMATLAB的默认设置确定。的默认设置确定。lplot(X,Y,splot(X,Y,s)lX X、Y Y是同维向量;是同维向量; X X、Y Y是有一是向量,有一是的矩阵;是有一是向量,有一是的矩阵; X X、Y Y是同维矩阵。是同维矩阵。ls s的意义与其在的意义与其在plot(X,splot(X,s)格式中的意义相同。格式中的意义相同。lplot(X1,Y1,s1,X2,Y2,s2,)plot(X1,Y1,s1,X2,Y2,s2,)l在此格式中,每个绘线在此格式中,每个绘线“三元组三元组”(X(X,Y Y,s)s)的结构和的结构和作用,与作用,与plot(X,Y,splot(X,Y,s) ) 相同。不同的相同。不同的“三元组三元组”之间没之间没有约束关系。有约束关系。例例 在在0x2 区间内,绘制曲线区间内,绘制曲线 y=2e-0.5xcos(4x)fplot 绘制函数图函数绘制函数图函数fplot的调用格式:fplot(fun,lims) 绘制函数fun在x区间 lims=xmin xmax的函数图。fplot(fun,lims,S) 以指定线形绘图。x,y=fplot(fun,lims) 只返回绘图点的值,而不绘图。用plot(x,y)来绘图。ezplot 符号函数的简易绘图函数符号函数的简易绘图函数ezplot的调用格式:ezplot(f) 这里f为包含单个符号变量x的符号表达式,在x轴的默认范围 -2*pi 2*pi内绘制f(x)的函数图ezplot(f,xmin,xmax) 给定区间ezplot(f,xmin,xmax,figure(n) 指定绘图窗口绘图。2、对数坐标绘图l对数坐标绘图分为对数坐标绘图分为x轴对数(轴对数(semilogx)、)、 y轴轴对数(对数(semilogy)及双对数(及双对数(loglog)三个函三个函数,其调用格式与二维曲线绘图函数数,其调用格式与二维曲线绘图函数plot相似。相似。3 3、极坐标绘图、极坐标绘图l极坐标绘图的函数为极坐标绘图的函数为polar,其调用格式为:其调用格式为:polar(theta,rho,s) 按照按照s所定义的线形、标记点和颜色绘制由所定义的线形、标记点和颜色绘制由theta、rho所所确定的曲线,其中绘图参数确定的曲线,其中绘图参数theta、rho分别为分别为角度和半径。角度和半径。4、复数绘图l当当使用使用plot函数绘制复数图形时,通常虚部是函数绘制复数图形时,通常虚部是忽略的。然而有一种特殊情况,即当忽略的。然而有一种特殊情况,即当polt的参的参数只有一个复变量数只有一个复变量z时,则绘制的图形为实部时,则绘制的图形为实部对于虚部的关系图(复平面上的一组点)。这对于虚部的关系图(复平面上的一组点)。这时时polt(z)等价于等价于polt(real(z),imag(z),其中其中z为为一个复矢量。一个复矢量。二、曲线的色彩、线型和数据点形二、曲线的色彩、线型和数据点形(一一) 色彩和线型:允许设置值(色彩和线型:允许设置值(P54/表表1.6.1)线线 型型色色 彩彩符号符号含义含义符号符号含义含义-实线实线b蓝蓝g绿绿:虚线虚线(冒号线)(冒号线)r红红c青青-.点划线点划线m品红品红y黄黄-双划线双划线k黑黑w白白(二二) 数据点形数据点形l如果想在图上标志数据点,那么就必须在如果想在图上标志数据点,那么就必须在plot指令中对数据点指令中对数据点形加以设置。形加以设置。l数据点形的合法取值见下表。数据点形的合法取值见下表。l数据点形表中的任一个字符既可单独使用,也可和线型、色彩数据点形表中的任一个字符既可单独使用,也可和线型、色彩表中的任何字符组合使用。表中的任何字符组合使用。符符 号号含含 义义符符 号号含含 义义.实心黑点实心黑点d菱形符菱形符diamond+十字符十字符h六角星符六角星符hexagram*八线符八线符o空心圆圈空心圆圈朝上三角符朝上三角符p五角星符五角星符pentagram朝右三角符朝右三角符s方块符方块符square朝左三角符朝左三角符x叉字符叉字符v朝下三角符朝下三角符三、坐标、刻度和分格线控制三、坐标、刻度和分格线控制三、坐标、刻度和分格线控制三、坐标、刻度和分格线控制(一)坐标控制l(高层)坐标控制指令(高层)坐标控制指令axis的用途很多,下表列出其常用功能。的用途很多,下表列出其常用功能。坐标轴控制方式、取向和范围坐标轴控制方式、取向和范围坐标轴的高宽比坐标轴的高宽比指指 令令含含 义义指指 令令含含 义义axis auto使用缺省设置使用缺省设置axis equal纵、横轴采用等长刻度纵、横轴采用等长刻度axis manual使当前坐标范围不变使当前坐标范围不变axis fill在在manual方式下起作用,使坐方式下起作用,使坐标充满整个绘图区标充满整个绘图区axis off取消轴背景取消轴背景axis image纵、横轴采用等长刻度纵、横轴采用等长刻度,且坐标框且坐标框紧贴数据范围紧贴数据范围axis on使用轴背景使用轴背景axis normal缺省矩形坐标系缺省矩形坐标系axis ij矩阵式坐标,原点在左上方矩阵式坐标,原点在左上方axis square产生正方形坐标系产生正方形坐标系axis xy普通直角坐标,原点在左下方普通直角坐标,原点在左下方axis tight把数据范围直接设为坐标范围把数据范围直接设为坐标范围axis(V)V=x1,x2,y1,y2;V=x1,x2,y1,y2,z1,z2;人工设定坐标范围。社定植:人工设定坐标范围。社定植:二维,二维,4个;三维,个;三维,6个个axis vis3d保持高宽比不变,用于三维旋转保持高宽比不变,用于三维旋转时避免图形大小变化时避免图形大小变化说明:坐标范围设定向量说明:坐标范围设定向量V中的元素必须服从:中的元素必须服从:x1x2,y1y2,z1z2。V的元素值允许取的元素值允许取inf或或-inf,那意那意味着上限或下限是自动产生的,即坐标范围半自动确定。味着上限或下限是自动产生的,即坐标范围半自动确定。(二)分格线和坐标框grid 是否画分格线的双向切换指令(使当前分格线状态翻转)是否画分格线的双向切换指令(使当前分格线状态翻转)grid on 画出分格线画出分格线grid off 不画分格线不画分格线box 坐标形式在封闭式和开启式之间切换指令坐标形式在封闭式和开启式之间切换指令box on 使当前坐标呈封闭形式使当前坐标呈封闭形式box off 使当前坐标呈开启形式使当前坐标呈开启形式四、图形标识l图图 形形 标标 识识 包包 括括 : 图图 名名 ( Title) 、 坐坐 标标 轴轴 名名(Label)、)、图形注释(图形注释(Text)和图例(和图例(Legend)。)。l标识指令的最简捷使用格式如下:标识指令的最简捷使用格式如下:title(S)书写图名书写图名xlabel(S)横坐标轴名横坐标轴名ylabel(S)纵坐标轴名纵坐标轴名legend(S1,S2,)绘绘制制曲曲线线所所用用线线型型、色色彩彩或或数数据据点点形形图图例例text(xt,yt,S)在图面(在图面(xt,yt)坐标处书写字符注释坐标处书写字符注释l例例1 1:本例非常简单,专供试验标识用。:本例非常简单,专供试验标识用。l例例2 2:通过绘制二阶系统阶跃响应,综合演示:通过绘制二阶系统阶跃响应,综合演示图形标识。本例比较综合,涉及的指令较广。图形标识。本例比较综合,涉及的指令较广。 五、多次叠绘、双纵坐标和多子图五、多次叠绘、双纵坐标和多子图l多次叠绘多次叠绘 l双纵坐标图双纵坐标图 l多子图多子图 多次叠绘l前面已介绍过前面已介绍过plot在同一次调用中画多条曲线的功在同一次调用中画多条曲线的功能。实际应用中,还会遇到在已经存在的图上再绘能。实际应用中,还会遇到在已经存在的图上再绘制一条或多条曲线的情况。为此,制一条或多条曲线的情况。为此,MATLAB提供了提供了以下指令:以下指令:hold on使当前轴及图形保持而不被刷新,准备接受使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线此后将绘制的新曲线hold off使当前轴及图形不再具备不刷新的性质使当前轴及图形不再具备不刷新的性质hold当前图形是否具备刷新性质的双向切换开关当前图形是否具备刷新性质的双向切换开关l例:利用例:利用hold绘制离散信号通过零阶保持器后产生绘制离散信号通过零阶保持器后产生的波形。的波形。双纵坐标图l在实际应用中常常提出这样一种需求:把同一自在实际应用中常常提出这样一种需求:把同一自变量的两个不同量纲、不同数量级的函数量的变变量的两个不同量纲、不同数量级的函数量的变化绘制在同一张图上。为此,化绘制在同一张图上。为此,MATLAB5.x新增了新增了以下指令。以下指令。plotyy(X1,Y1,X2,Y2)以左、右不同纵轴绘制以左、右不同纵轴绘制X1-Y1, X2-Y2两条曲线两条曲线plotyy(X1,Y1,X2,Y2,FUN) 以左、右不同纵轴把以左、右不同纵轴把X1-Y1,X2-Y2绘制成绘制成FUN指定形式的两指定形式的两条曲线条曲线plotyy(X1,Y1,X2,Y2,FUN1,FUN2)以左、右不同纵以左、右不同纵轴把轴把X1-Y1,X2-Y2绘制成绘制成FUN1,FUN2指定的不同形式的两条曲线指定的不同形式的两条曲线多子图lMATLAB允许用户在同一图形窗中布置几幅独立的子允许用户在同一图形窗中布置几幅独立的子图,具体指令是:图,具体指令是:subplot(m,n,k) 使使(mn)幅子图中的第幅子图中的第k幅成为当前图幅成为当前图subplot(position,left bottom width height) 在指定位置上开辟子图,并成为当前图在指定位置上开辟子图,并成为当前图l演示演示subplot指令对图形窗的分割。指令对图形窗的分割。交互式图形指令l在在MATLAB中中还还有有若若干干与与鼠鼠标标有有关关的的图图形形操操作指令。它们是:作指令。它们是:lginputlgtextllegendginputlx,y=ginput(n)用鼠用鼠标从二从二维图形上形上获取取 n个个点的数据坐点的数据坐标(x,y)。l该指令指令仅适用于二适用于二维图形。形。l具具体体操操作作方方法法:指指令令运运行行后后,会会把把当当前前图形形从从后后台台调到到前前台台,同同时鼠鼠标光光标变为十十字字叉叉;用用户可可移移动鼠鼠标,使使十十字字叉叉移移到到待待取取坐坐标点点;点点动鼠鼠标左左键,便便获得得该点点数数据据;此此后后,用用同同样的的方方法法,获取取其其余余点点的的数数据据;当当n个个点点的的数数据据全全部部取取到到后后,图形形窗窗便便退退回回后后台台,机机器回到器回到ginput执行前的行前的环境。境。gtextlgtext(arg)用鼠用鼠标把字符串或字符串异把字符串或字符串异质(元(元胞)数胞)数组arg放置到放置到图形上形上l该指令指令对二二维、三、三维图形都适用。形都适用。l具体操作方法:指令运行后,当前具体操作方法:指令运行后,当前图形窗自形窗自动由后台由后台转为前台,鼠前台,鼠标光光标变为十字叉;移十字叉;移动鼠鼠标,使十字叉移到希望的位置;点,使十字叉移到希望的位置;点动鼠鼠标右右键,arg所承所承载的字符将被放在的字符将被放在紧靠十字叉点靠十字叉点的的“第一象限第一象限”位置。位置。legend(P134)llegend(arg,pos)在指定位置建立在指定位置建立图例例llegend off擦除当前擦除当前图上的上的图例例l说明:明:l输入宗量入宗量arg是是图例中的例中的说明文字注明文字注释。l输入宗量入宗量pos是是图例在例在图上位置的指定符,它可取下表中的上位置的指定符,它可取下表中的值。lLegend在在图形窗中形窗中产生后,可用鼠生后,可用鼠标对其其进行拖拉,即把行拖拉,即把鼠鼠标光光标移到移到图例上,按住鼠例上,按住鼠标左左键;图例将随鼠例将随鼠标移移动,直到直到满意位置;放开按意位置;放开按键便完成操作。便完成操作。pos取值01234-1图例位置自动取最佳位右上角(缺省值)左上角左下角右下角图右侧barbarbarbar 长条图长条图长条图长条图errorbarerrorbarerrorbarerrorbar 图形加上误差范围图形加上误差范围图形加上误差范围图形加上误差范围 fplotfplotfplotfplot 较精确的函数图形较精确的函数图形较精确的函数图形较精确的函数图形 polarpolarpolarpolar 极坐标图极坐标图极坐标图极坐标图histhisthisthist 累计图累计图累计图累计图roseroseroserose 极坐标累计图极坐标累计图极坐标累计图极坐标累计图stairsstairsstairsstairs 阶梯图阶梯图阶梯图阶梯图scatterscatterscatterscatter散点图散点图散点图散点图stemstemstemstem 火柴杆图火柴杆图火柴杆图火柴杆图fillfillfillfill 实心图实心图实心图实心图featherfeatherfeatherfeather 羽毛图羽毛图羽毛图羽毛图compasscompasscompasscompass 罗盘图罗盘图罗盘图罗盘图quiverquiverquiverquiver 向量场图向量场图向量场图向量场图其他各种二维绘图函数其他各种二维绘图函数 三维绘图的基本操作 l l三维线图指令三维线图指令plot3 plot3 l l三维网线图和曲面图三维网线图和曲面图l l图形修饰处理图形修饰处理l l透视、镂空和裁切透视、镂空和裁切三维线图指令plot3l在三维图形指令中,在三维图形指令中,plot3plot3最易于理解,它使最易于理解,它使用格式与用格式与plotplot十分相识。具体如下:十分相识。具体如下:lplot3(X,Y,Z,s)plot3(X,Y,Z,s)lplot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,)plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,)l例:三维曲线绘图(要点:参量选取;线型、例:三维曲线绘图(要点:参量选取;线型、点型、图例)。点型、图例)。三维网线图和曲面图l三三维维网网线线图图和和曲曲面面图图的的绘绘制制比比线线图图稍稍显显复复杂杂,主主要要表表现现于于:绘绘图图数数据据的的准准备备;三三维维图图形形的的色色彩彩、明明暗暗、光光照和视点处理。照和视点处理。一、一、三维图形的数据准备三维图形的数据准备二、二、网线图、曲面图基本指令格式网线图、曲面图基本指令格式网线图:网线图:网线图:网线图:线条有颜色,空挡是黑色的线条有颜色,空挡是黑色的线条有颜色,空挡是黑色的线条有颜色,空挡是黑色的(无颜色)(无颜色)(无颜色)(无颜色)曲面图:曲面图:曲面图:曲面图:线条是黑色的,空挡有颜色线条是黑色的,空挡有颜色线条是黑色的,空挡有颜色线条是黑色的,空挡有颜色(把(把(把(把线条之间的空挡填充颜色,沿线条之间的空挡填充颜色,沿线条之间的空挡填充颜色,沿线条之间的空挡填充颜色,沿z z轴按每一网轴按每一网轴按每一网轴按每一网格变化格变化格变化格变化三维图形的数据准备l画函数画函数z=f(x,y)所代表的三维空间曲面,需要所代表的三维空间曲面,需要做以下数据准备:做以下数据准备:(1)确定自变量)确定自变量x,y的取值范围和取值间隔。的取值范围和取值间隔。x=x1:dx:x2;y=y1:dy:y2;(2)构成构成xy平面上的自变量平面上的自变量“格点格点”矩阵。矩阵。X,Y=meshgrid(x,y);(3)计算在自变量采样计算在自变量采样“格点格点”上的函数值,上的函数值,即即Z=f(X,Y)。网线图、曲面图基本指令格式lmesh(Z) 以以Z矩阵列、行下标矩阵列、行下标为为x,y轴自变量,画网线图轴自变量,画网线图lmesh(X,Y,Z) 最常用的网线图调用格式最常用的网线图调用格式lmesh(X,Y,Z,C) 最完整调用格式,画由最完整调用格式,画由C指定用色的网线图指定用色的网线图lsurf(Z) 以以Z矩阵列、行下标为矩阵列、行下标为x,y轴自变量,画曲面图轴自变量,画曲面图lsurf(X,Y,Z) 最常用的曲面图调用格式最常用的曲面图调用格式lsurf(X,Y,Z,C) 最完整调用格式,画由最完整调用格式,画由C指定用色的曲面图指定用色的曲面图标准三维曲面标准三维曲面sphere函数的调用格式为:函数的调用格式为:x,y,z=sphere(n)cylinder函数的调用格式为:函数的调用格式为:x,y,z= cylinder(R,n)MATLAB还有一个还有一个peaks 函数,称为多峰函数,常用于函数,称为多峰函数,常用于三维曲面的演示。三维曲面的演示。三维网线、网面图作图要领三维网线、网面图作图要领l生成坐标 X,Y=meshgrid(x,y)l表达式点运算 Z=X.2+Y.2X,Y是nm的矩阵,维数可任定X nY mZ默认方位角:37。5,俯角30。nm维 meshgrid 网线坐标值计算函数网线坐标值计算函数 z=f(x,y) 根据根据x,y坐标找出坐标找出z的高度的高度例:绘制例:绘制z=x2+y2的三维网线图形的三维网线图形 x=-5:5; y=x; X,Y=meshgrid(x,y) Z=X.2+Y.2 mesh(X,Y,Z)坐标矩阵坐标矩阵坐标向量坐标向量纵坐标矩阵纵坐标矩阵绘图函数绘图函数 在介绍二维图形时,曾提到条形图、杆图、饼图和填在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是的函数分别是bar3、stem3、pie3 和和fill3。 mesh还有几种格式:还有几种格式:meshc, meshz surf还有几种格式:还有几种格式: surfc ,surfl其他三维图形一、视点处理一、视点处理 MATLAB提供了设置视点的函数提供了设置视点的函数view,其调用,其调用格式为:格式为: view(az,el) view(az,el) view(x,y,z) 其中其中az为方位角,为方位角,el为仰角,它们均以度为单位。系为仰角,它们均以度为单位。系统缺省的视点定义为方位角统缺省的视点定义为方位角-37.5,仰角仰角30。图形修饰处理图形修饰处理二、色彩处理二、色彩处理1颜色的向量表示颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在个元素的向量表示颜色。向量元素在0,1范围取值,范围取值,3个元素分别表示红、绿、蓝个元素分别表示红、绿、蓝3种颜色的相对亮度,称种颜色的相对亮度,称为为RGB三元组。三元组。2色图色图 色图色图(Color map)是是MATLAB系统引入的概念。系统引入的概念。在在MATLAB中,每个图形窗口只能有一个色图。中,每个图形窗口只能有一个色图。色图是色图是m3 的数值矩阵,它的每一行是的数值矩阵,它的每一行是RGB三元三元组。色图矩阵可以人为地生成,也可以调用组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。提供的函数来定义色图矩阵。lcolormap( R,G,B) 色图设定函数lmatlab 的颜色数据集合为红、绿、兰三颜色矩阵R,G,B,维数m3lr,g,b在0 1区间连续取值,理论上颜色种类可达无穷多种lmatlab使用三维向量表示一种颜色,常用颜色数据见下表 饱和色 0 0 0 黑色 0 0 1 兰色 0 1 0 绿色 0 1 1 浅兰 1 0 0 红色 1 0 1 粉红 1 1 0 黄色 1 1 1 白色 调和色0.5 0.5 05 灰色0.5 0 0 暗红色1 0.62 0.4 铜色0.49 1 0.8 浅绿0.49 1 0.83 宝石兰matlab 的色图函数: hsv 饱和值色图 gray 线性灰度色图 hot 暖色色图 cool 冷色色图 bone 兰色调灰色图 copper 铜色色图 pink 粉红色图 prism 光谱色图 jet 饱和值色图II flag 红、白、蓝交替色图3 3三维表面图形的着色三维表面图形的着色 三维网面图实际上就是在网格图的每一个网格片三维网面图实际上就是在网格图的每一个网格片上涂上颜色。上涂上颜色。surf函数用缺省的着色方式对网格片着函数用缺省的着色方式对网格片着色。除此之外,还可以用色。除此之外,还可以用shading命令来改变着色方命令来改变着色方式。式。shading faceted命令将每个网格片用其高度对应的颜色命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。系统的缺省着色方式。shading flat命令将每个网格片用同一个颜色进行着色,命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更且网格线也用相应的颜色,从而使得图形表面显得更加光滑。加光滑。shading interp命令在网格片内采用颜色插值处理,得出命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。的表面图显得最光滑。三、光照处理三、光照处理MATLAB提供了灯光设置的函数,其调用格式为:提供了灯光设置的函数,其调用格式为:light (Color,选项选项1,Style,选项选项2,Position,选项选项3)四、亮度处理brighten(a)0=a=1 色图加亮-1=a=0色图变暗透视、镂空和裁切l图形的透视图形的透视l图形的镂空图形的镂空 l裁切裁切图形的透视lMATLAB在采用缺省设置画在采用缺省设置画mesh图形时,对图形时,对叠压在后面的图形采取了消隐措施。但有时叠压在后面的图形采取了消隐措施。但有时却需要透视效果。为此,却需要透视效果。为此,MATLAB提供了一提供了一个控制消隐的指令如下:个控制消隐的指令如下:hidden off透视被叠压的图形透视被叠压的图形hidden on消隐被叠压的图形消隐被叠压的图形l透视演示。透视演示。图形的镂空l演示:如何利用演示:如何利用“非数非数”NaN,对图形进行镂对图形进行镂空处理。空处理。裁切l由处理的图形不会产生切面。如果为了看清图由处理的图形不会产生切面。如果为了看清图形而需要表现切面,那么应该把被切部分强制形而需要表现切面,那么应该把被切部分强制为零。为零。l例:表现切面。例:表现切面。函数绘图的简捷指令l这些指令的这些指令的特点特点:无需数据准备无需数据准备,直接画出字符串函数或符号函,直接画出字符串函数或符号函数的图形。这一系列指令名称的前两个字符冠以数的图形。这一系列指令名称的前两个字符冠以“ez”,其含义其含义就是就是“Easy to”。指令名指令名含含 义义ezcontour画等位线画等位线ezcontourf画填色等位线画填色等位线ezmesh画网线图画网线图ezmeshc画带等位线的网线图画带等位线的网线图ezplot画二维曲线画二维曲线ezplot3画三维曲线画三维曲线ezpolar画极坐标曲线画极坐标曲线ezsurf画曲面图画曲面图ezsurfc画带等位线的曲面图画带等位线的曲面图l一元函数简捷绘图指令一元函数简捷绘图指令 lezplot(F)在在-2pi,2pi自变量范围中,绘自变量范围中,绘制制F曲线曲线lezplot(F,xmin,xmax)在指定自变量范在指定自变量范围,绘制围,绘制F曲线曲线lezplot(F,xmin,xmax,fig)在在fig指定的图形指定的图形窗内,在指定自变量范围,绘制窗内,在指定自变量范围,绘制F曲线曲线二元函数简捷绘图指令 lezsurf(F,dom_f,ngrid)在指定矩形域上,用指定格点在指定矩形域上,用指定格点数画二元函数曲面数画二元函数曲面lezsurf(F,dom_f,circ)在在圆域上,画二元函数曲面圆域上,画二元函数曲面lezsurf(x,y,z,dom_st,ngrid)在指定矩形域上,用二在指定矩形域上,用二元参量方式画曲面元参量方式画曲面lezsurf(x,y,z,dom_st, circ)在圆域上,用二元参量在圆域上,用二元参量方式画曲面方式画曲面l例例1 1:在园域上画的图形:在园域上画的图形 l例例2 2:使用球坐标参量画部分球壳:使用球坐标参量画部分球壳七、动态图形制作与图形编辑七、动态图形制作与图形编辑 动态图形可用于物理规律的形象描述动态图形可用于物理规律的形象描述和物理实验的仿真等,对物理教学有中要和物理实验的仿真等,对物理教学有中要的实用价值。的实用价值。l动态图形制作动态图形制作l图形编辑图形编辑演示演示动态图形制作l彗星状轨迹图cometcomet(y)comet(x,y)comet(x,y,p)comet(axes_handle,.例:例:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号