版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB SDU,1,MATLAB,Guangming Li 李光明 Office: EE303 Phone: 5688066-303 Email: ,MATLAB SDU,2,MATLAB课程介绍,定位:基础选修课 目标:了解MATLAB,能够熟练掌握数学(矩阵)运算,简单编程,简单的数据处理及基本图形绘制.,笔试 80%,平时成绩: 20,MATLAB SDU,3,学习内容一、MATLAB概述二、MATLAB的数值运算基础三、MATLAB的二维、三维绘图四、MATLAB程序设计五、MATLAB的数值运算进阶六、MATLAB的符号运算七、图形化仿真程序设计八、简介MATLAB工具箱与跨平
2、台接口,MATLAB SDU,4,第一节 MATLAB语言概述,一、MATLAB语言的发展 matlab语言是由美国的Clever Moler博士于1980年开发的 设计者的初衷是为解决“线性代数”课程的矩阵运算问题 取名MATLAB即Matrix Laboratory 矩阵实验室的意思,MATLAB SDU,5,1984年,MATLAB第1版(DOS版) 1992年,MATLAB4.0版 1994年,MATLAB 4.2版 1997年,MATLAB 5.0版 1999年,MATLAB 5.3版 2000年,MATLAB 6.0版 2001年,MATLAB 6.1版 2002年,MATLAB
3、6.5版 2004年,MATLAB 7.0版,MATLAB SDU,6,它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的相结合 MATLAB是一种直译式的高级语言,比其它程序设计语言容易,MATLAB SDU,7,MATLAB已经不仅仅是一个“矩阵实验室”了,它集科学计算、图象处理;声音处理于一身,并提供了丰富的Windows图形界面设计方法 MATLAB语言是功能强大的计算机高级语言, 成功地应用于各工程学科的研究领域,MATLAB SDU,8,MATLAB在美国已经作为大学工科学生必修的计算机语言之一 (C, FORTRAN, ASSEMBLER
4、, MATLAB) 近年来,MATLAB语言已在我国推广使用,现在已应用于各学科研究部门和许多高等院校,MATLAB SDU,9,二、matlab能在各领域做什麽 工业研究与开发 数学教学,特别是线性代数 数值分析和科学计算方面的教学与研究 电子学、控制理论和物理学等工程和科学 学科方面的教学与研究 经济学、化学和生物学等计算问题的所有其他领域中的教学与研究,MATLAB SDU,10,二、MATLAB语言的特点: 语言简洁紧凑,语法限制不严,程序设计 自由度大,可移植性好 运算符、库函数丰富 图形功能强大 界面友好、编程效率高 扩展性强,MATLAB SDU,11,三、MATLAB语言的功能
5、: 强大的数值(矩阵)运算功能 广泛的符号运算功能 高级与低级兼备的图形功能(计算结果的可视化功能) 可靠的容错功能 应用灵活的兼容与接口功能 信息量丰富的联机检索功能,MATLAB SDU,12,1.矩阵运算功能,MATLAB提供了丰富的矩阵运算处理功能,是基于矩阵运算的处理工具。 变量 矩阵,运算 矩阵的运算 例如 C = A + B ,A,B,C都是矩阵,是矩阵的加运算 即使一个常数,Y=5,MATLAB也看做是一个11的矩阵,MATLAB SDU,13,2.符号运算功能 符号运算即用字符串进行数学分析 允许变量不赋值而参与运算 用于解代数方程、微积分、复合导数、积分、二重积分、有理函数
6、、微分方程、泰乐级数展开、寻优等等,可求得解析符号解,MATLAB SDU,14,3.丰富的绘图功能与计算结果的可视化,具有高层绘图功能两维、三维绘图 具有底层绘图功能句柄绘图 使用plot函数可随时将计算结果可视化,MATLAB SDU,15,4.编程语言,MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高 图形化程序编制功能 动态系统进行建模、仿真和分析的软件包 用结构图编程,而不用程序编程 只需拖几个方块、连几条线,即可实现编程功能,MATLAB SDU,16,5.丰富的MATLAB工具箱,MATLAB主工具箱 符号数学工具箱 S
7、IMULINK仿真工具箱 控制系统工具箱 信号处理工具箱 图象处理工具箱 通讯工具箱 系统辨识工具箱 神经元网络工具箱 金融工具箱,MATLAB SDU,17,6.MATLAB的兼容功能 可与C语言、FORTRAN语言跨平台兼容 用函数CMEX、FMEX实现 此功能不推荐使用,MATLAB SDU,18,7.MATLAB的容错功能 非法操作时,给出提示,并不影响其操作 1/0 Warning: Divide by zero ans = Inf,MATLAB SDU,19,8.MATLAB的开放式可扩充结构,matlab 所有函数都是开放的 用户可按自己意愿随意更改 正因为此功能,使得matla
8、b的应用越来越广泛 9.强大的联机检索帮助系统 可随时检索matlab函数 可随时查询matlab函数的使用方法,MATLAB SDU,20,四 MATLAB的运行环境与安装,MATLAB的运行环境硬件环境:(1) CPU (2) 内存(3) 硬盘(4) CD-ROM驱动器和鼠标。软件环境:(1) Windows 98/NT/2000 或Windows XP(2) 其他软件根据需要选用,MATLAB SDU,21,MATLAB的安装安装MATLAB 6.5系统,需运行系统自带的安装程序setup.exe,可以按照安装提示依次操作。,MATLAB SDU,22,MATLAB集成环境,启动与退出M
9、ATLAB集成环境1MATLAB系统的启动与一般的Windows程序一样,启动MATLAB系统有3种常见方法:(1)使用Windows“开始”菜单。(2)运行MATLAB系统启动程序matlab.exe。(3) 利用快捷方式。,MATLAB SDU,23,2MATLAB系统的退出要退出MATLAB系统,也有3种常见方法:(1) 在MATLAB主窗口File菜单中选择Exit MATLAB命令。(2) 在MATLAB命令窗口输入Exit或Quit命令。(3) 单击MATLAB主窗口的“关闭”按钮。,MATLAB SDU,24,启动MATLAB后,将进入MATLAB 6.5集成环境。MATLAB
10、6.5集成环境包括MATLAB主窗口、命令窗口(Command Window)、工作空间窗口(Workspace)、命令历史窗口(Command History)、当前目录窗口(Current Directory)和启动平台窗口(Launch Pad)。,MATLAB SDU,25,MATLAB常用窗口简介: 指令窗口(Command Window) 历史指令窗口(Command History) 工作空间浏览器(Workspace Browser) 当前目录浏览器(Current Directory Browser) 内存数组编辑器(Array Editor) M文件编辑/调试器(Edito
11、r/Debugger) 交互界面分类目录窗口(Launch Pad) 帮助导航/浏览器(Help Navigator/Browser) 开始按钮(Start),MATLAB SDU,26,1. 指令窗口(Command Window),最基本的窗口。缺省情况下,该窗口位于MATLAB桌面的右侧。该窗口是运行各种MATLAB指令的最主要窗口。在该窗口内,可以键入各种MATLAB指令、函数、表达式,并显示除图形外的运算结果。 指令窗口可以独立显示,如右图所示。通过切换按钮 或下拉菜单View:Dock Command Window进行独立窗口和嵌入窗口的切换。 在指令窗口运行过的指令可以用键再次调
12、出运行。 “”为指令行提示符,提示其后语句为输入指令。“ans”为answer的英文缩写。,MATLAB SDU,27,命令窗口的常用控制指令,MATLAB SDU,28,命令窗口中指令行的编辑,为方便操作,MATLAB不但允许用户在指令窗中对输入指令进行各种编辑和运行,而且允许用户对已经输入的指令进行回调、编辑和重运行。,MATLAB SDU,29,2. 历史指令窗口(Command History),历史指令窗口位于MATLAB操作桌面的左下侧。历史指令窗口记录用户在MATLAB指令窗口输入过的所有指令行。 历史指令窗可以用于单行或多行指令的复制和运行、生成M文件等。使用方法:选中单行(鼠
13、标左键)或多行指令( Ctrl 或 Shift +鼠标左键),鼠标右键激活菜单项,菜单项中包含有复制( Copy )、运行( Evaluate Selection )、和生成M文件( Create M File )命令,以及删除等指令。 历史指令窗口也可以切换成独立窗口和嵌入窗口,切换方法和指令窗口相同。,MATLAB SDU,30,实录指令diary,diary指令能产生“日志”。MATLAB会把 diary 指令后的所有指令、计算结果、提示信息等保存为ASCII文件。文件存放在当前工作目录下,可以用文本编辑器打开。 例如:运行指令 diary MyDiary.txt。此后,指令窗口中的所有
14、操作内容都记录在内存中。当运行 diary off 指令后,所有操作均记录在当前工作目录下名为 MyDiary.txt 的文件中。 diary与历史指令窗口的区别: 历史指令窗口只保存在指令窗口中运行过的指令行,以及日期信息。diary指令则保存所有出现在指令窗口中的信息,包括指令行、计算结果、出错信息、帮助信息等等。,MATLAB SDU,31,3. 工作空间浏览器(Workspace Browser),缺省情况下,工作空间浏览器位于MATLAB桌面的左上方的前台。在工作空间浏览器中可以查阅、保存、编辑内存变量或删除内存变量。 选中变量,单击右键打开菜单项。菜单中的open命令可以在数组编辑
15、器(Array Editor)中打开变量。 graph命令可以选择适当绘图指令使变量可视化显示。,MATLAB SDU,32,Workspace Browser和Array Editor,Workspace Browser工作空间窗口 列出数据的变量信息,包括变量名、变量数组大小(尺寸)、变量字节大小和变量类型。 基本工作空间或简称为工作空间(Workspace) MATLAB在进行运算时,将变量存储在内存中,这些存储变量的内存空间称为基本工作空间,简称工作空间。 暂时(临时)工作空间: 每当MATLAB在调用执行某一函数时,即进入该函数的暂时工作空间(可视为基本工作空间的下层空间),函数在此
16、空间进行运算,而不影响到基本空间内的变量,当函数执行结束后,MATLAB会同时删除函数的暂时工作空间,并回到基本空间。,MATLAB SDU,33,内存变量查阅、删除的指令操作法,在指令窗中运用who, whos查阅MATLAB内存变量。 who命令:查看现存于基本空间的变量 whos命令:详细查看现存于基本空间的变量 在指令窗中运用clear指令可以删除内存(工作空间内)的某一或所有变量 如:clear A , clear all,MATLAB SDU,34,4. 当前目录浏览器(Current Directory Browser),缺省情况下,当前目录浏览器位于MATLAB桌面的左上方的后
17、台。点击标签(Current Directory)即可在前台看到当前目录浏览器。同样当前目录浏览器也可以独立存在,见下图,切换方法同上。选中文件,鼠标右键激活菜单项,可以完成打开或运行M文件、装载数据文件(MAT文件)等操作。,MATLAB SDU,35,用户目录和当前目录的设置,MATLAB默认当前工作目录为 c:matlab701work 目录。一般来说,我们将这个目录用作临时工作目录。用户最好创建自己的用户目录( 例如创建文件夹 c:MyDir )来存放自己创建的程序文件。 建立自己的用户目录后,需要修改当前工作目录为用户目录,那么,MATLAB将会把所有相关的数据和文件都存放在同一目录
18、下,方便用户管理。修改当前工作目录的方法: 1) 利用MATLAB桌面上的当前工作目录设定区进行修改。 2) 利用指令设置。cd c:MyDir指令设置c:MyDir为当前工作目录。 当前工作目录设置只在当前MATLAB环境下有效,重新启动MATLAB,系统自动恢复默认当前工作目录matlab701work目录,需要再次进行设置。,MATLAB SDU,36,MATLAB搜索路径,MATLAB工作时根据MATLAB搜索路径,依次从各目录上搜索所需调用的文件、函数、数据。当用户有多个目录需要同时与MATLAB交换信息时,必须将这些目录添加到MATLAB搜索路径上,使得这些目录中的文件可以被调用。
19、其中用来存放运行中的文件和数据的目录必须设置成当前工作目录。 菜单项 File:Set Path 或 pathtool 指令可以调出搜索路径设置对话框,用户可添加自己经常用到的目录到搜索路径。如果是希望永久修改搜索路径,应在修改结束后,选择save。 如果用户需要在程序体中添加搜索路径,可利用指令: 1) path(path,c:MyDir):将c:MyDir添加到搜索路径尾端。 2) path(c:MyDir,path):将c:MyDir添加到搜索路径首端。 path 指令只在当前MATLAB环境下有效,重新启动MATLAB,需要重新设置。,MATLAB SDU,37,5. 内存数组编辑器(
20、Array Editor),利用内存数组编辑器可以输入大数组。 首先,在指令窗口创建新变量。然后,在工作空间浏览器中双击该变量,在数组编辑器( Array Editor )中打开变量。在Numeric format中选择适当的数据类型,在size中输入行列数,即可得到一个大规模数组。修改数组元素值,直到得到所需数组。,MATLAB SDU,38,6. M文件编辑/调试器(Editor/Debugger),对于简单的或一次性的问题,可以通过在指令窗口直接输入一组指令行去求解。当所需指令较多或需要重复使用一段指令时,就要用到M脚本编程。 MATLAB下拉菜单项File:New:M-File可以新建
21、一个M文件,而 File:Open 可以打开一个M文件。打开的M文件编辑器如下图所示。菜单项 Debug 和 Breakpoints 可以完成调试功能。,MATLAB SDU,39,7. 交互界面分类目录窗口(Launch Pad),可以通过菜单项View:Launch Pad打开。 该窗口以可展开的树状结构显示MATLAB提供的所有交互界面,包括:帮助界面、演示界面、各种应用交互界面。通过双击树状结构上的分类图标,即可得到相应的交互界面。 MATLAB 7.0.1版后,已经将该窗口取消,因为该窗口所能实现的所有功能都可以通过开始(Start)菜单的功能来实现。,MATLAB SDU,40,打
22、开帮助导航/浏览器的方法: 1)MATLAB窗口上的 ? 按钮。 2)在命令窗口输入 helpdesk 或 help browser,回车。 3)下拉菜单 View: help 或 Help: MATLAB help。,MATLAB SDU,41,9. 开始按钮(Start),开始按钮是从MATLAB6.5版开始新增加的快捷功能,点击该按钮出现的菜单与交互界面窗口(Launch Pad)类似。,开始按钮,开始按钮作为一个快捷按钮,可以打开前面提到的所有窗口。,MATLAB SDU,42,其他帮助,1)演示帮助 在MATLAB中有一组演示程序,打开界面为帮助导航/浏览器界面。运行这组程序,可以对
23、照屏幕上的显示仔细研究实现演示的有关M文件。该组演示程序具有很强的示范作用。初学用户可以通过运行比较简单的演示程序,很快的接受MATLAB。老用户可以通过深入研究相应的M文件,快速掌握编程技巧。打开方法: 在MATLAB指令窗,运行指令demo。 选中下拉菜单View:Launch Pad,在交互界面分类目录窗口双击所需主题下的Demos图标。 单击快捷按钮start按钮下的Demos图标。 选中下拉菜单Help:Demos。,MATLAB SDU,43,2)Web帮助,这是MathWorks公司的技术支持网站。可以通过选中Web菜单下的选项,连接相应的web站点,获取信息。,MATLAB S
24、DU,44,例、用一个简单命令求解线性系统 3x1+ x2 - x3 = 3.6 x1+2x2+4x3 = 2.1 -x1+4x2+5x3 = -1.4 A=3 1 -1;1 2 4;-1 4 5;b=3.6;2.1;-1.4; x=Ab x = 1.4818 -0.4606 0.3848,对于线性系统有Ax=b,五 MATLAB 基础举例,MATLAB SDU,45,例、用简短命令计算并绘制在0 x6范围内的sin(2x)、sinx2、sin2x。 x=linspace(0,6) y1=sin(2*x),y2=sin(x.2),y3=(sin(x).2; plot(x,y1,x, y2,x,
25、 y3),MATLAB SDU,46,MATLAB基本操作,计算器 例求12+2 (7-4)32的运算结果。 1)键盘在指令窗输入下面一行指令,然后按下Enter键。 (12+2*(7-4)/32 2)等待指令执行完毕,MATLAB指令窗显示运算结果。 ans= 2,MATLAB SDU,47,例输入矩阵A= 输入下面的指令,然后回车 A=1 2 3;4 5 6;7 8 9 2) MATLAB显示结果 A = 12 3 45 6 78 9,MATLAB SDU,48,1)数值的记述:采用习惯的十进制表示法 例如:3 -99 0.01 1.3e-3 4.5e33 2)变量命名规则 变量名、函数名
26、由英文字母、数字、下划线构成。 变量名、函数名区分字母大小写。A、a代表不同含义。 变量名第一个字符必须是英文字母。 变量名不得包含空格、标点,可以包含下划线。 例如:m_array001合法,1_a d,minute不合法。 MATLAB命令通常是用小写字母书写。MATLAB中变量使用之前,不需要指定变量的数据类型,也不必事先声明变量。,数值、变量和表达式,MATLAB SDU,49,MATLAB默认的预定义变量,预定义变量在MATLAB启动时由系统自动生成。用户在编写指令和程序时,应尽量避免使用下列预定义变量,以免混淆。,MATLAB SDU,50,运算符和表达式,MATLAB表达式的规则
27、与一般手写算式基本相同。 a)表达式由变量名、运算符和函数名组成。 b)表达式按优先级自左向右运算,括号可改变优先级顺序。 c)优先级顺序由高到底为:指数运算、乘除运算、加减运算。 d)表达式中赋值符“=”和运算符两侧允许有空格。,MATLAB用“/” 和 “”代表左除(常用除法)和右除运算。这两种运算的差别如下: 例如:2/5 表示0.4, 25 表示2.5; a/(b+c) 表示a(b+c), a(b+c) 表示(b+c)a。 对于矩阵, A/B 表示AB-1,即A*inv(B); BA 表示B-1A,即inv(B)*A。,MATLAB SDU,51,复数和复数矩阵,MATLAB可以直接输
28、入复数 a+bi 或 r*exp(i*theta)。MATLAB的矩阵元素可以是复数或复数表达式。 例常用复数转换指令 real、imag、abs、angle z1=3+4i%输入一个复数z1 z1 = 3.0000 + 4.0000i a=real(z1)%求复数z1的实部 a = 3 b=imag(z1) %求复数z1的虚部 b = 4 r=abs(z1) %求复数z1的模 r = 5 theta=angle(z1) %求复数z1的相角 theta = 0.9273,MATLAB SDU,52,指令窗常用指令,1)数据显示格式的控制指令 MATLAB可以显示多种数据格式,默认的数据显示格式
29、是format short g,即在 short 和 short e 中自动选择最佳方式记述。用户可以在指令窗中直接输入指令format +数据格式,修改数据的显示格式,该修改仅对当前指令窗有效。 另外,用户可以通过下拉菜单 File:Preferences 打开参数设置对话框进行设置。该修改永久有效,除非再次修改。,MATLAB SDU,53,数值计算结果的显示格式,在MATLAB指令窗中,直接输入相应的指令,或在菜单弹出框中进行选择,都可获得所需的数值计算结果显示格式。,MATLAB SDU,54,指令窗常用控制指令,也可以利用菜单命令实现 例如: dir d:MyProg %显示d:My
30、P rog目录下的文件清单 edit d:MyProgexm013_9.m %打开编辑器编辑exm013_9.m which exm013_9.m %指出exm013_9.m所在的目录,MATLAB SDU,55,指令行中常用的标点符号,标点在MATLAB指令中的作用极其重要。为了保证指令的正确执行,标点符号必须在英文状态下输入。,MATLAB SDU,56,内存变量的操作,1. 内存变量的查阅、删除 1)who,whos指令查询内存变量 who指令获取当前所有内存变量的名称列表。 whos指令获取详细的内存变量列表,包含变量类型、大小等信息。 2)clear 指令删除内存变量 clear指令
31、清除所有内存变量 clear v1 v2清除内存变量v1 v2,被删变量间用空格分隔 3)打开工作空间浏览器( WorkSpace ),可以看到所有内存变量的详细说明,和whos指令效果相同。并且可以通过右键点击变量引出现场菜单,对该变量进行编辑、删除、重命名、保存、绘图等操作。,MATLAB SDU,57,数据文件的存取,1)利用指令save、load实现数据文件(*.mat)的存取。 save/load filename%保存/打开文件filename.mat save/load filename v1 v2%保存/打开变量v1 v2 2)打开工作空间浏览器 (WorkSpace),可以在
32、右键现场菜单中选择Save Workspace as保存所有内存变量,或Save Selection as保存指定变量。Import Data用于装入数据文件。 例 a=1 2 3;4 5 6;7 8 9;%输入一个3*3数组a b=This is a test;%输入一个字符串数组b c=the first line,1 2 3;%输入一个元胞数组c d.d1=Struct;%输入一个构架数组d d.d2=8; d.d3=c;,MATLAB SDU,58, who%得到内存变量清单 Your variables are: a b c d whos%得到内存变量的详细清单 Name Size
33、Bytes Class a 3x3 72 double array b 1x14 28 char array c 1x2 172 cell array d 1x1 564 struct array Grand total is 71 elements using 836 bytes save test1%保存所有内存变量到文件test1.mat clear c%清除内存变量c who%察看内存变量清单 Your variables are: a b d clear%清除所有内存变量 who%察看内存变量清单 load test1 a b%载入所有内存变量到文件test1.mat who%察看内
34、存变量清单 Your variables are: a b,MATLAB SDU,59,引导,数组:是指由一组实数或复数排成的长方阵列(Array)。 数组运算:是指无论在数组上施加什么运算(+、-、或函数),总认为那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作。 MATLAB精心设计数组和数组运算的目的在于: 使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式; 提高程序的向量化程度,提高计算效率,节省计算机开销。 例:,MATLAB SDU,60,数组、矩阵的基本运算,MATLAB语言最基本的特点在于矩阵运算,绝大多数的变量和数据都可看成为矩阵变量和矩阵
35、数据。 应用MATLAB语言编程时,尤其要注意矩阵的阶数和向量的维数问题。 标量可看作11阶的矩阵。,MATLAB SDU,61,一维数组的创建,(1)逐个元素输入法 x=2 pi/2 sqrt(3) 3+5i (2)冒号生成法 通过“步长”设定,生成一维“行”数组的方法。 通用格式:x=a:inc:b (3)定数线性采样法 在设定的“总点数”下,均匀采样生成一维“行”数组。 通用格式:x=linspace(a,b,n) 说明该指令生成(1 n)数组,其作用与x=a:(b-a)/(n-1):b同。,MATLAB SDU,62,一维数组的子数组寻访和赋值,例1:子数组的寻访(Address)。
36、例2:子数组的赋值(Assign)。,MATLAB SDU,63,二维数组的创建,二维数组: 是由实数或复数排列成矩形而构成的。 从数据结构上看,矩阵和二维数组没有什么区别。当二维数组带有线性变换时,该二维数组就是矩阵。 直接输入法 利用M文件创建和保存数组,MATLAB SDU,64,直接输入法,对于较小数组,从键盘上直接输入最方便。 二维数组必须有以下三个要素: 整个输入数组必须以方括号“ ”为其首尾; 数组的行与行之间必须用分号“;”或回车键【 Enter 】隔离; 数组元素必须由逗号“,”或空格分隔。 实例,MATLAB SDU,65,利用M文件创建和保存数组,对于今后经常需要调用的数
37、组,尤其是比较大而复杂的数组,为它专门建立一个M文件是值得的。 M文件的创建过程,MATLAB SDU,66,“全下标”标识,“全下标”标识法:即指出是“第几行,第几列”的元素。 优点:几何概念清楚,引述简单。 对于二维数组来说, “全下标”标识由两个下标组成:行下标,列下标。 例:矩阵A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 则 A(2,3)= 8 , A(3,2)= 12 A(3,5)= 15 , A(1,5)= 5,MATLAB SDU,67,“单下标”标识,“单下标(Linear Index)”标识: 就是“只用一个下标来指明元素在数组中的位置”。
38、“一维编号”: 先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”;然后,自上往下对元素位置进行编号。 例:矩阵A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 则 A(2)=6, A(5)=7 , A(8)= 8 ,A(12)= 14,MATLAB SDU,68,“单下标”与“全下标”的转换关系: 以(mn)的二维数组A为例,若“全下标”元素位置是“第r行,第c列”,那么相应的“单下标”为l=(c-1) m+r。 MATLAB有两个指令可实现以上表示方法间的转换: Sub2ind 据全下标换算出单下标。 Ind2sub 据单下标换算出全下标。,M
39、ATLAB SDU,69,“逻辑1”标识,所谓“逻辑1”标识 法是:通过与A同样大小的逻辑数组L中“逻辑值1”所在的位置,指出A中元素的位置。 L的元素或是0或是1,它是“逻辑数组(Logical Array)”。是一种特殊的数据类型。 例,MATLAB SDU,70,子数组寻访和赋值格式汇总表,MATLAB SDU,71,子数组与下标寻址举例,4,10,1,6,2,8,1.2,9,4,25,7.2,5,7,1,11,0,0.5,4,5,56,23,83,13,0,10,1 2 3 4 5,1 2 3 4 5,16111621 27121722 38131823 49141924 510152
40、025,A =,A(3,1) A(3),A(1:5,5) A(:,5) A(21:25),A(4:5,2:3) A(9 14;10 15),MATLAB SDU,72,多(高)维数组的定义,数组的第一维称为“行(Row)”,第二维称为“列(Column)”,第三维称为“页(Page)”,第四维称为“箱(Box)”,,MATLAB SDU,73,多(高)维数组的创建,创建多维数组最常用的四种方法: 直接通过全下标元素赋值方式创建多维数组; 由若干同样大小的低维数组组合成多维数组; 由函数ones,zeros,rand,randn直接创建标准多维数组; 借助cat,repmat,reshape等函
41、数构作多维数组。 例,MATLAB SDU,74,多维数组的标识,数组的维数(Dimension)和ndims指令 指令ndims(A)可直接给出数组A的维数。 数组的大小(Size)和size指令 不管A数组的维数是多少,size(A)可给出A各维的大小,而指令length(A)可给出所有维中的最大长度。即length(A)等价于max(size(A)。,MATLAB SDU,75,第二节 数组运算(点运算),数组运算:是指无论在数组上施加什么运算(+、-、或函数),总认为那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作。 当两个数组具有相同阶数时,进行加、减、乘、除的
42、点运算,其运算是按元素对元素方式进行的。 例,MATLAB SDU,76,2. 数组乘除(,./,.) ab a,b两数组必须有相同的行 和列两数组相应元素相乘。 a=1 2 3;4 5 6;7 8 9; b=2 4 6;1 3 5;7 9 10; a.*b ans = 2 8 18 4 15 30 49 72 90,MATLAB SDU,77,a=1 2 3;4 5 6;7 8 9; b=2 4 6;1 3 5;7 9 10; a*b ans = 25 37 46 55 85 109 85 133 172,MATLAB SDU,78,a./b=b.a a.b=b./a a./b=b.a 都是
43、a的元素被b的对应元 素除 a.b=b./a 都是b的元素被a的对应元 素除 例: a=1 2 3;b=4 5 6; c1=a.b; c2=b./a c1 = 4.0000 2.5000 2.0000 c2 = 4.0000 2.5000 2.0000, 给出a,b对应元素间的商.,MATLAB SDU,79,第三节 矩阵运算,矩阵加减乘除等运算 矩阵的操作变换 矩阵函数。,MATLAB SDU,80,矩阵运算 1基本算术运算 MATLAB的基本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)。注意,运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。,MATLAB
44、SDU,81,矩阵加减运算 假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。,MATLAB SDU,82,(2) 矩阵乘法 假定有两个矩阵A和B,若A为mn矩阵,B为np矩阵,则C=A*B为mp矩阵。,MATLAB SDU,83,矩阵乘()运算 规则: A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘。 a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b c =14 32 23,MAT
45、LAB SDU,84,(3) 矩阵除法在MATLAB中,有两种矩阵除法运算:和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则AB和B/A运算可以实现。AB等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于含有标量的运算,两种除法运算的结果相同,如3/4和43有相同的值,都等于0.75。又如,设a=10.5,25,则a/5=5a=2.1000 5.0000。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般ABB/A。,MATLAB SDU,85,a p a 自乘p次幂,方阵,1的整数,3. 矩阵
46、乘方 an,ap,pa,对于p的其它值,计算将涉及特征值 和特征向量,如果p是矩阵,a是标量 ap使用特征值和特征向量自乘到p次 幂;如a,p都是矩阵,ap则无意义。,MATLAB SDU,86,a=1,2,3;4,5,6;7,8,9;a2 ans =30 36 42 66 81 96 102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,MATLAB SDU,87,a0.5 ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844
47、 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i,MATLAB SDU,88,inv 矩阵求逆 det 行列式的值 eig 矩阵的特征值 diag 对角矩阵 矩阵转置,矩阵的函数以及其它操作变换,MATLAB SDU,89,矩阵的逆与伪逆,矩阵的逆对于一个方阵A,如果存在一个与其同阶的方阵B,使得:AB=BA=I (I为单位矩阵)则称B为A的逆矩阵,当然,A也是B的逆矩阵。求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在MATLAB中,求一个矩阵的逆非常容易。求方阵A的逆矩阵可调用函数inv(A)。 例 用求逆矩阵的方
48、法解线性方程组。Ax=b其解为:x=A-1b,MATLAB SDU,90,2矩阵的伪逆如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A同型的矩阵B,使得:ABA=ABAB=B此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。在MATLAB中,求一个矩阵伪逆的函数是pinv(A)。,MATLAB SDU,91,方阵的行列式,把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。,MATLAB SDU,92,矩阵的特征值与特征向量,在MATLAB中,计
49、算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:(1) E=eig(A):求矩阵A的全部特征值,构成向量E。(2) V,D=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。,MATLAB SDU,93,(3) V,D=eig(A,nobalance):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。,MATLAB SDU,94,矩阵的超越函数,1矩阵平方根sqrtmsqrtm(A)计算矩阵A的平方根。 2矩阵对数logmlogm(A)计算矩阵A的自然对数。此函数输入参数
50、的条件与输出结果间的关系和函数sqrtm(A)完全一样 3矩阵指数expm、expm1、expm2、expm3expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩阵指数eA。,MATLAB SDU,95,普通矩阵函数funmfunm(A,fun)用来计算直接作用于矩阵A的由fun指定的超越函数值。 例:当fun取sqrt时,funm(A,sqrt)可以计算矩阵A的平方根,与sqrtm(A)的计算结果一样。,MATLAB SDU,96,5.矩阵的一些特殊操作,矩阵的变维 a=1:12;b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵
51、的变向 rot90:旋转; fliplr:上翻; flipud:下翻 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角; triu:抽取主上三角 矩阵的扩展,MATLAB SDU,97,数组运算和矩阵运算的区别,从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。 但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。 虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中,但它的作用和影响正随着MATLAB的发展而扩大。,MATLAB S
52、DU,98,数组运算和矩阵运算指令对照汇总(一),MATLAB SDU,99,数组运算和矩阵运算指令对照汇总(二),MATLAB SDU,100,复数矩阵,复数矩阵中的元素的虚数部分用i和j方式来输入,显示时只用i方式表示。 复数矩阵可以有两种方式表示: A=1 2;3 4+i*5 6;7 8 A=1+5*i 2+6*I;3+7*i 4+8*i 其显示结果是一样的。,MATLAB SDU,101,特殊矩阵,非数NaN “空”数组(空阵) 全0阵 单位阵 全1阵 随机阵 其他特殊矩阵,MATLAB SDU,102,非数NaN,按IEEE规定,0/0,/,0等运算都会产生非数(Not a Numb
53、er)。该非数在MATLAB中用NaN或nan记述。 根据IEEE数学规范,NaN具有以下性质: NaN参与运算所得的结果也是NaN,即具有传递性; 非数没有大小概念,因此不能比较两个非数的大小。 非数的功用: 真实记述0/0,/,0运算的后果; 避免可能因0/0,/,0运算而造成程序执行的中断; 在数据可视化中,用来裁剪图形。,MATLAB SDU,103,“空”数组(空阵),“空”数组是MATLAB为操作和表述需要而专门设计的一种数组。 某维长度为0或若干维长度均为0的数组都是“空”数组。 “空”数组的功用: 在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”
54、; 运用“空”数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。,MATLAB SDU,104,第四节 关系操作和逻辑操作,在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非问题作出“是真,是假”的回答。为此MATLAB设计了关系操作、逻辑操作 和一些相关函数。 MATLAB的约定: 在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”。 所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组(Logical Array)”。在此数组中的1表示“真”,0表示“假”。 逻辑数组是一种特殊的数值数组。,MAT
55、LAB SDU,105,关系操作,算例,MATLAB SDU,106,逻辑操作,MATLAB SDU,107,关系、逻辑函数,MATLAB中能给出“逻辑数组”类型计算结果的函数有很多,包括:关系逻辑函数、工作状态判断函数、特殊数据判断函数、数据类型判断函数等。 关系逻辑函数 特殊数据判断指令 数据类型判断指令,MATLAB SDU,108,关系逻辑函数,MATLAB SDU,109,特殊数据判断指令,MATLAB SDU,110,数据类型判断指令,MATLAB SDU,111,字符串,在MATLAB中,字符串是用单撇号括起来的字符序列。 MATLAB将字符串当作一个行向量,每个元素对应一个字符
56、,其标识方法和数值向量相同。也可以建立多行字符串矩阵。 注意:1. 如果字符串中有单撇号,该单撇号用两个单撇号表示 2.通常要求各行字符数相等 3. char函数去除此限制,MATLAB SDU,112,练习 1一维数组,创建 x=a:inc:b x=linspace(a,b,n) 寻址扩充以及赋值 x=rand(1,5) X=9 8 7 6 5 x(3) x(1 2 5) x(1:3) x(3:end) x(3:-1:1) x(1 2 3 4 4 3 2 1),MATLAB SDU,113,Help 的应用举例 逻辑标识,Find 运用与注释 举例: x=rand(1,5); y=x(fin
57、d(x0.5),MATLAB SDU,114,二维数组的创建以及寻址赋值等,【课堂举例】 例II: A = zeros(2,5); A(:) = -4:5 L = abs(A)3 X = A(L) A=zeros(2,4) A(:)=1:8 s=2,3,5; A(s) Sa=10 20 30 A(s)=Sa A(:,2 3)=ones(2),MATLAB SDU,115,思考:,1、要求在闭区间0,2 上产生50个等距采样的一维数组。试用两种不同的指令实现。,MATLAB SDU,116,数组运算和矩阵运算指令对照汇总(一),MATLAB SDU,117,第2章小结,熟悉matlab界面操作。
58、 数组/距阵的创建,扩展,寻址,赋值; 数组/距阵的变维,转置与旋转等操作 数组运算,距阵运算 关系操作以及逻辑操作 特殊距阵:ones,eye,zeros,NaN,rand,randn, 对角阵等变化, 逆矩阵,行列式,特征值特征向量 字符串,MATLAB SDU,118,思考:,1、要求在闭区间0,2 上产生50个等距采样的一维数组。试用两种不同的指令实现。,MATLAB SDU,119,第2章小结,熟悉matlab界面操作。 数组/距阵的创建,扩展,寻址,赋值; 数组/距阵的变维,转置与旋转等操作 数组运算,距阵运算 关系操作以及逻辑操作 特殊距阵:ones,eye,zeros,NaN,
59、rand,randn, 对角阵等变化, 逆矩阵,行列式,特征值特征向量 字符串,MATLAB SDU,120,教材第四章 数据的可视化MATLAB绘图基础 基本图形处理功能(数据和函数的可视化),数据可视化的目的在于:通过图形,从一堆杂乱的离散数据中观察数据间的内在关系,感受由图形所传递的内在本质。,MATLAB SDU,121,Introduction 二维曲线绘图的基本操作 三维绘图的基本操作,MATLAB SDU,122,Intro:离散数据和离散函数的可视化,众所周知,任何二元实数标量对(xa,ya)可用平面上的一个点表式;任何二元实数向量对(x,y)可用平面上的一组点表示。对于离散实函数yn=f(xn),当 xn以递增(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南充文化旅游职业学院单招职业倾向性考试题库附答案详解(满分必刷)
- 2026年南昌健康职业技术学院单招综合素质考试题库带答案详解(完整版)
- 2026年北京科技大学天津学院单招职业倾向性测试题库附答案详解(培优)
- 2026年南阳农业职业学院单招综合素质考试题库附参考答案详解(研优卷)
- 2026年信阳航空职业学院单招职业适应性考试题库附答案详解(夺分金卷)
- 2026年华北理工大学轻工学院单招职业倾向性考试题库附答案详解(培优b卷)
- 2026年南京科技职业学院单招职业倾向性考试题库附答案详解(轻巧夺冠)
- 2026年国际商务谈判模拟试题及答案详解分场景
- 2026年建筑工程结构与材料性能测试题
- 2026年影视编导考试指导书编导基础与创意表达试题
- 2025年武汉市中考数学试卷(含答案解析)
- T/BIKE 7.1-2020电动自行车锂离子蓄电池换电柜技术要求第1部分:柜体
- 智能化生产流程重组-洞察阐释
- 腕表买卖合同协议
- 2025届河南省郑州市高三下学期第二次质量预测英语试题(原卷版+解析版)
- 2025年安阳职业技术学院单招职业适应性测试题库学生专用
- 2025年临沂科技职业学院高职单招语文2019-2024历年真题考点试卷含答案解析
- 产科新生儿交接流程
- 《逃不开的经济周期》拉斯·特维德
- 交通事故授权委托书
- 「完整优质版」基金业协会备案的合伙协议范本
评论
0/150
提交评论