《MATLAB数值矩阵数组运算和数据图形处理及数据可视化课件》由会员分享,可在线阅读,更多相关《MATLAB数值矩阵数组运算和数据图形处理及数据可视化课件(46页珍藏版)》请在金锄头文库上搜索。
1、MATLAB数值矩阵运算数值矩阵运算MATLAB的核心与基础的核心与基础8/1/20241MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB数值矩阵、数组及其运算数值矩阵、数组及其运算 v MATLAB最为出色之处在于其强大的计算能力,这也是MATLAB成为世界流行的工具软件的关键所在。vMATLAB的计算功能基本上可以分为数值计算和符号计算两种,这两种计算都可以通过在MATLAB的主窗口(命令窗口)中键入命令来完成。v由于MATLAB是以矩阵作为基本的运算单元,所以了解和掌握MATLAB的最佳方式就是学习如何处理矩阵。一个标量是11的矩阵,一个n维列向量是n1的矩阵,一个长度
2、为n的数组是1 n的矩阵。8/1/20242MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础矩阵的创建矩阵运算 矩阵性质分析 如何设计?8/1/20243MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的创建 在MATLAB中输入矩阵有三条基本原则:1)矩阵元素必须在方括号中;2)每行内的元素问用逗号或空格分开;3)行与行之间用分号分隔。例如我们在MATLAB命令窗口中直接输入: X1 2 3;4 5 6;7 8 9或1,2,3;4,5,6;7,8,9回车后会得到输出结果: X= 1 2 3 4 5 6 7 8 9 8/1/20
3、244MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的创建 这种通过直接输入来定义矩阵的方式是建立矩阵最简单的方式,一般只适用于简单的矩阵。MATLAB提供了很多定义和建立矩阵的方法。除手动直接输入以外主要还有三种,首先看一下利用MATLAB提供的生成和操作矩阵的函数来创建和生成一些特殊矩阵。8/1/20245MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的创建MATLAB提供的创建特殊矩阵的函数有: zeros:生成一个元素全部为0的矩阵。 ones:生成一个元素全部为1的矩阵。 eyeeye:生成一个单位矩阵。 r
4、andrand:生成一个元素在0和1之间均匀分布的随机矩阵。在命令窗口中输入: Azeros(3,4) %生成一个34的全零矩阵 c=eye(4,4) %生成一个44的单位阵6MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的创建通过M文件创建矩阵 实质和手动直接形成矩阵没差别,但可以存储,以便多次应用,另外在输入是可以方便修改。通过数据文件创建矩阵 很多数据是以其他数据文件形式存在的。例如文本文件,Excel的数据表格文件等,MatLab提供了功能强大的数据导入向导(Import Wizard)调入数据,同时也可以利用编程读取文件中的数据。8/1/2024
5、7MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的运算矩阵的加减运算 矩阵的加法和减法运算指令为: AB,AB 需要说明的是A、B必须具有相同的维数,除非其中一个是标量。例如: a=1 2 3 b=4 5 6 a+b a-b涉及哪些?8/1/20248MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的运算矩阵的乘法运算 矩阵的乘法及乘方命令如为: A*B,AP 矮阵相乘时要求A的列数等于B的行数,即必须满足矩阵相乘的条件。当然和矩阵的加减运算一样,MATLAB允许标量(或常数)和任意矩阵相乘,即该标量与矩阵的每一个元素相
6、乘。如果A是一个np的矩阵,B是pm的矩阵,则它们的乘积结果c是一个nm的矩阵。例如: a=1 2 3;4 5 6; b=1 1 1;2 2 2;3 3 3 a*b 矩阵的乘方实际上相当于矩阵的自乘,需要注意的是只有方阵才能进行乘方运算,而且在命令Ap中,p只能是标量(或常数)。当p是正整数时,Ap表示矩阵A自乘p次;当p是负整数时,Ap表示先求出矩阵A的逆矩阵,然后将A的逆矩阵自乘p次。8/1/20249MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵的运算矩阵的除法运算 如果A是非奇异方阵,则矩阵的除法命令如下: A B (左除), B A(右除)其中,
7、 A B (左除)等效于矩阵A的逆左乘矩阵B,而B A(右除)等效于矩阵A的逆右乘矩阵B。在通常情况下,xab是方程组a*x=b的解,x=b/a是方程组x*a=b的解。8/1/202410MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵性质分析 矩阵元素的引用与操作 如同许多计算机高级语言一样,MATLAB直接采用下标引用矩阵元索,例如:A是一个33的矩阵,则A(1,2)表示矩阵A中的第一行第二列的元素。除此之外,为了方便用户对矩阵进行修改,MATLAB允许用户对矩阵中的整行整列操作,例如A(:,3)表示短阵第三列的元素,其中冒号表示所有的行。 MATLAB
8、提供了一些对矩阵中的元素进行操作的命令和函数,用来对矩阵进行变形和分析 8/1/202411MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵性质分析矩阵元素的引用与操作举例说明: A=1 2 3;4 5 6;7 8 9 定义矩阵A A(2,:) 显示A的第二行 A(2,:)= 删除A的第二行(第二行赋空值) A(2,3)=35 将A中第二行第三列的元素改为358/1/202412MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵性质分析矩阵的行列式、秩、逆和转置 vdet(A)求矩阵的行列式(要求A是方阵) vrank(A)
9、求矩阵的秩 vinv(A)求矩阵的逆(要求A是方阵,且行列式不为零) vA求矩阵的转置 例如:A=1 0 0;0 2 0;0 0 3; det(A); rank(A); inv(A); A;8/1/202413MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵运算基础 矩阵性质分析特征向量v 方阵A的特征值和特征向量表征了该矩阵的本质特性,因此具有特殊的意义。在MATLAB中,用命令V,D=eig(A)来计算A的特征值和特征向量,其中V表示由A的特征向量构成的矩阵,D表示由A的特征值构成的对角阵,而且AVDV1。vA的p次方的计算过程为:由于AVDV1,我们就将矩阵D中的每
10、一个元素(即特征值)p次方,再代回去就可以计算出A的p次方。8/1/202414MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB数组运算基础数组的定义(即创建) 数组的计算 数学计算、关系运算和逻辑运算 8/1/202415MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB数组运算基础数组的定义(创建) 数组也是MATLAB中的一种重要的数据类型,虽然它的创建方法和矩阵一样,但在计算上,它与矩阵有很大的不同,也就是说,数组和矩阵有着不同的使用方法。 8/1/202416MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB数组运算基础数组的数学计算
11、 数组的加减运算和矩阵运算没有区别,主要在乘法和除法上。我们看下面的例子: A1 2 3;7 8 9 B=4 5 6;8 9 0如果输入: A*B则会出现如下错误:? Error using = *Inner matrix dimensions must agree.系统告诉我们这两个矩阵的维数不匹配。显然,我们如果把A、B均看成矩阵它们是不能相乘的;但作为数组,A和B却可以相乘。结果应该还是一个23的数组,其中每一个元素是A、B中对应元素的乘积。8/1/202417MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB数组运算基础 数组数学运算MATLAB为了区别这种运算和矩阵运
12、算,专门定义了数组乘法“.*”。如:A.*B同样的,数组的乘方运算符号为“”,数组的乘方就是把每个元素都乘方。 A.3类似于矩阵,数组也有左除和右除之分:“.”和“./”,运算时也是把对应元素相除,例如: A.B 用B中的元素除以A中的对应元素 A./B 用A中的元素除以B中的对应元素 从上我们可以看出,虽然数组的存储方式和矩阵没有区别,但是基于数组的数学计算都是对应元素间的计算,而不像矩阵有一个整体的概念。在计算符号方面,都是在矩阵计算符号前面加上一个点。 8/1/202418MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵和数组的关系运算矩阵和数组的关系运算 MATL
13、AB提供了下列关系运算符来实现两个量之间的比较: 大于 = 大于等于 = = 等于 = 不等于 在关系运算中,当关系成立时结果为1(真),不成立时结果为0(假)。 8/1/202419MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB矩阵和数组的逻辑运算逻辑运算 MATLAB提供的逻辑运算符有: &与 |或 非在逻辑运算中,只有非零(1)和0两种元素。 MATLAB除了提供上面这些逻辑关系运算符之外,还提供了一些逻辑关系函数,常用函数参见教材P36表22。 8/1/202420MATLAB数值矩阵数组运算和数据图形处理及数据可视化MATLAB图形处理和数据可视化 MATLAB绘
14、图8/1/202421MATLAB数值矩阵数组运算和数据图形处理及数据可视化绘图的重要性在科学计算中,我们往往要处理大量的数据。如果我们把这些数据用图形表现出来,就能很容易地发现这些数据的内在联系,大大提高工作的效率。MATLAB正是基于这种考虑,提供了强大的绘图能力。我们将学习如何利用MATLAB使数据可视化,以及如何处理图形以便达到最好的表达效果。 8/1/202422MATLAB数值矩阵数组运算和数据图形处理及数据可视化参考一个数据文件文件中的数据为电流电压采样值如果绘制为图形规律何在?8/1/202423MATLAB数值矩阵数组运算和数据图形处理及数据可视化8/1/202424MATL
15、AB数值矩阵数组运算和数据图形处理及数据可视化MATLAB图形功能MATLAB的图形功能包括二维绘图和三维绘图两大部分:其中二维绘图用来实现科学曲线的绘制,图标的绘制以及各种专业数据的可视化显示等;三维绘图用来实现二元函数的图形表达,向量场数据的表达和超过三维的场数据的显示,例如:等高线、落差图等。 8/1/202425MATLAB数值矩阵数组运算和数据图形处理及数据可视化图形窗口在MATLAB中,可以用figure命令从命令窗口新建一个图形窗口,每执行一次该命令就产生一个图形窗口,可以同时产生多个图形窗口,MATLAB为每个窗口都分配一个句柄来进行标志 通过工具栏上的图形按钮,我们可以对图形
16、进行操作。具体地说,我们可以在图形窗口添加文本;可以在图形窗口添加箭头;可以添加直线;可以对图形进行缩放操作;可以将图形旋转三维图形等。具体的可以参看在线帮助。 8/1/202426MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制 plot函数 坐标的设定 图形的标注 其他命令介绍特殊图形 8/1/202427MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制plot函数plot函数是最基本的二维图形绘制函数,也是最重要的函数之一。该函数有不同的输入参数以实现不同的功能,具体用法如下:plot(y) 其中,y是一个向量。plot以该参数的值为纵坐标,横
17、坐标从一开始自动赋值为向量1 2 3 ,向量的方向和长度与参数y相同。plot(x,y) 这是最常见的形式。x为横坐标向量,y为纵坐标向量。 8/1/202428MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制plot函数(2)plot(x1,y1,x2,y2) 用这种形式,我们可以在同一个窗口中绘制多条不同的曲线,而且每条曲线可以有不同的横坐标。这种方式用于对不同的曲线进行比较。plot(x,y,选项) 这里的选项包括线型、颜色、数据点标记符号等特性的设置。利用这些选项可以把同一窗口的不同曲线设置为不同的格式,便于区别。这些选项还可以组合使用。选项由三个字符组成,第一个
18、字符表示用于连线的字符,第二个字符表示曲线的颜色,第三个字符表示用于标出数据点的字符。 8/1/202429MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制plot函数(3)例: t=0:0.1:2*pi; k=0:0.2:3*pi; x=sin(t); y=cos(k); plot(t,x,:ro,k,y,-b+) 8/1/202430MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制坐标的设定 MATLAB的绘图具有很强的灵活性,它可以根据所要绘制曲线的数据范围来自动选择合适的坐标系的显示范围,使得图形尽可能清晰完整地显示出来。所以,用户一般不用费
19、心去手动地调整坐标系。但在某些情况下,用户可能觉得自动选择的坐标系不符合自己的要求,则可以使用函数axis来加以修改。axis的调用格式为: axis(xmin,xmax,ymin,ymax,zmin,zmax) 其中,各坐标的最小值(xmin,ymin,zmin)必须小于对应的最大值(xmax,ymax,zmax),对于绘制二维图形,省去zmin和zmax参数。 8/1/202431MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注 一个图形不仅要美观而且要让人容易理解它所要表达的意思。因此,对图形作适当的标注是一个成功的图形所不可缺少的。MatLab提供了丰富
20、的函数来对图形进行全方位的标注。基本的标注函数如下: Title,xlabel,ylabel,zlabel,legend,text,Gtext这些用于标注的函数可以设置一系列的属性,比如字体的粗细(FontWeight),字体名(FontName),字体的大小(FontSize)等等。另外,为了将数学公式或工程问题中所用到的一些特殊符号标注在图形上,可以使用由“”引导的特殊字符串。例如,pi表示圆周率等。具体的,可以参阅MATLAB的帮助功能。 8/1/202432MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注(2) (1 1)最基本的标注)最基本的标注 函数
21、xlabel、ylabel、zlabel分别用来对x轴、y轴、z轴进行标注。其格式为: (以xlabel为例) xlabel(text,property1,propertyValue1,property2,propertyValue2,) 其中,text为要加注的文本,“property”为文本的属性,property Value为相应的文本属性的取值。该命令将文本以一定的格式加到坐标轴的下面。 8/1/202433MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注(3)(2)给图形窗口添加文本 MATLAB中提供text函数用来在图形任意窗口的任意位置添加文本。
22、该函数的调用格式为: Text(xposition,yposition,text) 其中,(xposition,yposition)表示加入字符串的位置;text是要加入的文本字符串,其中可以包含一些特殊字符。这种标注的字符串有很大的灵活性。8/1/202434MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注(4)举例如下:v=-1;+1;t=0:0.05:2*pi;plot(t,sin(t);xlabel(time(0-2*pi);ylabel(value);text(pi/2,0.9,uparrowsin(pi*1/2)=,v(2,:);text(pi*3/
23、2,-0.9,downarrowsin(pi*3/2)=,num2str(sin(pi/2);%num2str将数值转化为字符串text(0,-0.6,Date:,date);%date返回表示当前时间字符串8/1/202435MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注(5)除了text函数外,MATLAB还提供了gtext函数用来利用鼠标交互式地绘图形添加文本。gtext函数的使用格式与xlabel函数相同,为: gtext( text, propertyName, property Value) 在命令窗口键入这个命令后,图形窗口的鼠标指针会变为十字型
24、光标,移动光标到某一个位置后单击鼠标键或按下键盘上任意键,就可以将所要标注的文本定位在该位置。 8/1/202436MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注(6)(3)使用图例给图形加上图例,便于区分不同的图形,便于对图形的观察和分析。添加图例的功能用函数legend来完成。legend的调用格式为: legend(str1,str2,str3,) 只要指定字符串,legend就可以自动的按顺序将字符串添加到相应的曲线线型之后。缺省情况下,MATLAB将图例置于图形的右上角。也可以在legend函数中加入一个参数以控制图例的位置。具体格式如下: lege
25、nd(str1,str2,str3,position)其中,“position”参数可以取如下值:0 自动把图例置于与图中曲线重叠最少的位置。1 置于图形的右上角,这是缺省情况。2 置于图形的左上角。 3 置于图形的右下角。4 置于图形的左下角。 1 置于图形外部的右侧。 8/1/202437MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维图形绘制图形的标注(7)例:t=0:0.05*pi:2*pi;plot(t,cos(t),:g,t,sin(t),b) legend(cos,sin) 8/1/202438MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维绘图其他命
26、令介绍 (1)极坐标曲线 某些情况下,使用极坐标绘制曲线更加方便,更能体现图形的本质特征。在MATLAB中,绘制极坐标曲线的函数为: polar(angle,r,选项) 其中,“angle”和“r”分别为角度向量和幅度向量,该函数所使用的选项的格式与plot函数一致。8/1/202439MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维绘图其他命令介绍(2)双y轴图形 使用函数plotyy可以绘制一个左右各有一个y轴的图形。这种方式使得在同一个窗口绘制不同曲线更加方便,效果更好。该函数有以下几种常用的形式: plotyy(x1,y1,x2,y2):在一个图形窗口同时绘制(x1,y1
27、)和(x2,y2)两条曲线,曲线(x1,y1)用左边的y轴,曲线(x2,y2)用右边的y轴。 plotyy(x1,y1,x2,y2,function):function是字符串格式,用来指定进行绘图的函数名,如用plot。 plotyy(x1,y1,x2,y2,function1,function2):分别指定用不同的绘图函数绘制(x1,y1)和(x2,y2)曲线。 8/1/202440MATLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维绘图其他命令介绍图形的缩放 函数zoom用来指定对图形进行缩放的操作。这个命令在分析大量的数据点时很有用。有以下几个用法: 8/1/202441MA
28、TLAB数值矩阵数组运算和数据图形处理及数据可视化基本二维绘图其他命令介绍(4)图形窗口的分割 有时候我们需要在同一个绘图窗口绘制不同坐标系下的曲线,用来方便地比较这些曲线之间的差别。这可以通过调用函数subplot,把整个图型窗口分割成若干个窗口来实现。 函数subplot的调用格式为: subplot(m,n,i) 其功能是将图形窗口分成m行n列子窗口,然后选择第i个窗口为当前窗口进行绘制。8/1/202442MATLAB数值矩阵数组运算和数据图形处理及数据可视化特殊图形 在工程应用中,常常需要用到一些特殊形式,具有特殊功能的图。譬如说,直方图经常用来比较某个量随着另一个量的变化趋势;等高
29、线图经常用来分析具有相同取值的量的分布趋势,矢量图常常用来分析某种矢量场的分布情况,等等。下面我们将介绍一些可能会遇到的特殊图形,并给出用MATLAB绘制这些特殊图案的方法。 8/1/202443MATLAB数值矩阵数组运算和数据图形处理及数据可视化特殊图形直方图和面积图直方图和面积图直方图和面积图是平常工作中经常用到的两种图形。它们适用于对不同数据的比较,以及分析各个数据在总体中所占的比例。面积图是用于连续数据,而直方图则是用于离散的数据。MATLAB中用于绘制直方图的函数有四种:bar,bar3,barh,bar3h。这当中,bar和bar3用于绘制二维和三维的竖向直方图,而barh及ba
30、r3h用于绘制横向直方图。这些函数都是以输入数据矩阵的每一列为一组数据,并以相同的颜色表示,而把矩阵的行画在一起。8/1/202444MATLAB数值矩阵数组运算和数据图形处理及数据可视化直方图和面积图举例y=rand(5,3); %产生一组随机数矩阵subplot(1,3,1);bar(y);%画直方图subplot(1,3,2);bar3(y,group);%画缺省形式的直方图subplot(1,3,3);bar(y,stack);%将同一列数据画在一个直方图上8/1/202445MATLAB数值矩阵数组运算和数据图形处理及数据可视化特殊图形矢量图v 矢量图 矢量图在工程技术中用得十分广泛
31、,特别在场的理论中,引入矢量图使得场的分布图形化,有助于理解场的结构,从而对场的各种特性有更深刻的理解。另外,可以灵活运用到相量分析上。vMATLAB提供了如下函数来绘制矢量图:compass,feather,quiver和quiver3。这些函数如果只有一个参数,则把参数的实部当成x分量,把虚部当成y分量;如果有两个参数,则第一个参数为x分量,第二个参数为y分量。 函数compass绘制矢量时都是从同一个起点开始的而函数feather则指定矢量的起点为横轴上等间距的点。调用函数quiver和quiver3时要指定每个矢量的起始点的坐标。 8/1/202446MATLAB数值矩阵数组运算和数据图形处理及数据可视化