第二章数据结构及其运算优秀课件.ppt
《第二章数据结构及其运算优秀课件.ppt》由会员分享,可在线阅读,更多相关《第二章数据结构及其运算优秀课件.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章数据结构及其第二章数据结构及其运算运算第1页,本讲稿共49页主要内容主要内容2.1 数据类型数据类型2.2 一维数组一维数组2.3 二维数组二维数组2.4 高维数组高维数组2.5 数组操作数组操作2.6 数组运算与矩阵运算数组运算与矩阵运算2.7 多项式多项式2.8 关系运算、逻辑运算和运算符关系运算、逻辑运算和运算符2.9 字符串数组字符串数组2.10 细胞数组细胞数组2.11 结构体数组结构体数组第2页,本讲稿共49页2.1 引引 言言 数据结构数据结构是程序设计的重要基础,使用合理的数据结构去描述问题,是程序设计的重要基础,使用合理的数据结构去描述问题,能够缩短程序代码、简化程序结
2、构、便于程序维护。能够缩短程序代码、简化程序结构、便于程序维护。在在MATLAB里共有里共有六种六种基本基本数据类型数据类型,每一种类型可以构成一维、二,每一种类型可以构成一维、二维和多维的数组。这六种是:维和多维的数组。这六种是:双精度型(双精度型(double):双精度数值类型,是最常用的类型;双精度数值类型,是最常用的类型;字符型(字符型(char):字符数组,每个字符占:字符数组,每个字符占16位位;稀疏型(稀疏型(sparse):双精度稀疏矩阵,只存储矩阵中的非:双精度稀疏矩阵,只存储矩阵中的非0元素;元素;细胞型(细胞型(cell):细胞,可以存放任意类型数据:细胞,可以存放任意类
3、型数据结构体(结构体(struct):不同类型的数据集合:不同类型的数据集合存储型(存储型(storage):用于图像处理:用于图像处理第3页,本讲稿共49页2.1 引引 言言数组(数组(Array)可以是一维的行(或列),也可以是二维或多维的。可以是一维的行(或列),也可以是二维或多维的。用户可以操作用户可以操作整个数组整个数组,也可以,也可以操作数组中的某个或者某些元素操作数组中的某个或者某些元素。MATLAB会根据表达式的运算结果,自动确定变量的类型和大小。变会根据表达式的运算结果,自动确定变量的类型和大小。变量的数据类型可以用以下函数来查看:量的数据类型可以用以下函数来查看:isa(v
4、ar,type)%变量变量var的数据类型名称如果的数据类型名称如果 是是type,则返回,则返回1,否则返回,否则返回0class(var)%返回变量返回变量a的数据类型名称的数据类型名称whos var%查看变量查看变量var的详细情况的详细情况第4页,本讲稿共49页2.2 一维数组一维数组 一、一维数组的创建一、一维数组的创建 1逐个元素输入法逐个元素输入法 2冒号运算符法冒号运算符法【说明】【说明】冒号运算符的格式是:冒号运算符的格式是:startv:step:endvstartv是初值,即数组的第一个元素值。是初值,即数组的第一个元素值。endv是终值,即数组的最后一个元素值。是终值
5、,即数组的最后一个元素值。step称为步长,即数组元素每次增加的值;称为步长,即数组元素每次增加的值;步长步长setp可以省略不写,此时默认步长为可以省略不写,此时默认步长为1;setp可以为负值,此时要求可以为负值,此时要求startvendv。第5页,本讲稿共49页2.2 一维数组一维数组 【说明】【说明】linspace函数的调用格式为:函数的调用格式为:x=linspace(a,b,n)数组的第一个元素值为数组的第一个元素值为a,最后一个元素值为,最后一个元素值为b,数组中共有,数组中共有n个元个元素,素,这这n个元素线性均匀分布于个元素线性均匀分布于a和和b之间,即数组元素依次为之间
6、,即数组元素依次为3、线性分隔法、线性分隔法4、对数分隔法、对数分隔法 【说明】【说明】logspace函数的调用格式为:函数的调用格式为:x=logspace(a,b,n)数组的第一个元素值为数组的第一个元素值为 ,最后一个元素值为,最后一个元素值为 ,数组中共有,数组中共有n个元素,这个元素,这n个元素的以个元素的以10为底的对为底的对数值均匀分布与数值均匀分布与a和和b之间,即数组元素依次为之间,即数组元素依次为第6页,本讲稿共49页2.2 一维数组一维数组二、一维数组的访问二、一维数组的访问一维数组的访问遵循以下约定:一维数组的访问遵循以下约定:用下标方式访问数组元素,下标要用一对圆括
7、号用下标方式访问数组元素,下标要用一对圆括号()引起来引起来;下标代表的是元素在数组中的位置序号,从下标代表的是元素在数组中的位置序号,从1开始,最大值为数组中开始,最大值为数组中元素的个数元素的个数;下标可以是常量,也可以是变量下标可以是常量,也可以是变量;可以访问数组中的单个元素,也可以访问数组中的某些元素,即数组可以访问数组中的单个元素,也可以访问数组中的某些元素,即数组的子数组。的子数组。例例2.2.1第7页,本讲稿共49页2.3 二维数组二维数组一、二维数组的建立一、二维数组的建立1逐个输入数组元素值逐个输入数组元素值如果数组内元素数量少,可以直接从键盘逐个输入元素的值,需要遵如果数
8、组内元素数量少,可以直接从键盘逐个输入元素的值,需要遵循的规则是:循的规则是:整个数组必须用中括号整个数组必须用中括号“”括起来括起来数组的行与行之间用分号数组的行与行之间用分号“;”分隔,或者用回车符分隔分隔,或者用回车符分隔每行之间的元素必须用逗号每行之间的元素必须用逗号“,”或者空格分隔或者空格分隔分隔符必须是英文字符,即在英文状态下输入分号、分隔符必须是英文字符,即在英文状态下输入分号、括号、方括号、逗号等括号、方括号、逗号等例例2.3.1第8页,本讲稿共49页2.3 二维数组二维数组2利用利用M文件文件 如果数组元素很多,或者元素值要经常改变,我们可以采用如果数组元素很多,或者元素值
9、要经常改变,我们可以采用M文件来文件来输入和保存数组。输入和保存数组。用用M文件实现对数组文件实现对数组x的输入和保存,方法如下:的输入和保存,方法如下:(1)在当前目录下,用程序编辑器建立一个名为)在当前目录下,用程序编辑器建立一个名为MyData.m的文件;的文件;(2)在编辑器中输入)在编辑器中输入x内容;内容;(3)保存)保存MyData.m文件;文件;(4)在命令窗口键入)在命令窗口键入MyData,就可以在内存中建立,就可以在内存中建立 数组数组x并读入数组元素的值。并读入数组元素的值。例例2.3.2第9页,本讲稿共49页2.3 二维数组二维数组二、二维数组的访问二、二维数组的访问
10、二维数组的访问遵循以下约定:二维数组的访问遵循以下约定:用下标方式访问数组元素,下标要用一对圆形括号用下标方式访问数组元素,下标要用一对圆形括号()引起来;引起来;用双下标方式访问数组元素,格式为用双下标方式访问数组元素,格式为(r,c),其中,其中r为二维数组的行下标,为二维数组的行下标,c为二维数组的列下标,下标之间用逗号分隔;为二维数组的列下标,下标之间用逗号分隔;用单下标方式访问二维数组,二维数组的单下标是按照列优先规则排序用单下标方式访问二维数组,二维数组的单下标是按照列优先规则排序的,即二维数组被看作是从第一列开始从左到右依次将各列首位连接而的,即二维数组被看作是从第一列开始从左到
11、右依次将各列首位连接而成的一维数组,单下标表示元素在这个一维数组中的位置;成的一维数组,单下标表示元素在这个一维数组中的位置;单下标和双下标具有对应关系,其值可以通过单下标和双下标具有对应关系,其值可以通过 ind2sub和和sub2ind函数进行转换;函数进行转换;可以访问二维数组的某个元素及其子数组,可可以访问二维数组的某个元素及其子数组,可 以对元素和子数组赋值。以对元素和子数组赋值。例例2.3.3第10页,本讲稿共49页2.3 二维数组二维数组【说明】有关空数组【说明】有关空数组某一维长度为某一维长度为0的数组称为空数组的数组称为空数组;空数组用空数组用 表示,表示数组中没有元素,但可
12、以表示计算结果为表示,表示数组中没有元素,但可以表示计算结果为“空空”;仅仅能用仅仅能用isempty函数正确判断数组是否为空函数正确判断数组是否为空;可以通过给数组元素赋值空数组来缩小数组的大小可以通过给数组元素赋值空数组来缩小数组的大小;尽量不要用空数组参与逻辑运算和关系运算尽量不要用空数组参与逻辑运算和关系运算;例例2.3.4第11页,本讲稿共49页2.4 高维数组高维数组 一、高维数组的创建一、高维数组的创建可以采用下列方法创建高维数组:可以采用下列方法创建高维数组:直接通过全下标方式进行元素赋值;直接通过全下标方式进行元素赋值;用低维数组合成高维数组;用低维数组合成高维数组;用数组生
13、成函数(用数组生成函数(ones/zeros/rand等)生成高维数组;等)生成高维数组;用数组操作函数(用数组操作函数(repmat/reshape等)构造高维数组。等)构造高维数组。例例2.4.1第12页,本讲稿共49页2.4 高维数组高维数组二、多维数组的访问二、多维数组的访问对于高维数组的访问,有下列约定:对于高维数组的访问,有下列约定:可以通过全下标方式访问。对于三维数组来说,第一维下标称为可以通过全下标方式访问。对于三维数组来说,第一维下标称为“行行下标下标”,第二维下标称为,第二维下标称为“列下标列下标”,第三维下标一般称为,第三维下标一般称为“页下标。页下标。”可以通过单下标方
14、式访问。高维数组的单下标是按照后维优先的次序可以通过单下标方式访问。高维数组的单下标是按照后维优先的次序排列的,对于三维数组来说,先排列排列的,对于三维数组来说,先排列“页页”,页内先排列,页内先排列“列列”,列,列内再排列内再排列“行行”,即第,即第1行第行第1列第列第1页的元素单下标为页的元素单下标为1,然后先变化,然后先变化行下标,再变化列下标,最后变化页下标。行下标,再变化列下标,最后变化页下标。数组的维数通过数组的维数通过ndims函数获取。函数获取。数组的尺寸通过数组的尺寸通过size函数获取函数获取数组的所有维中的最大长度通过数组的所有维中的最大长度通过length函数获取。函数
15、获取。例例2.4.2第13页,本讲稿共49页2.5 数组操作数组操作一、标准数组的生成一、标准数组的生成 数学中定义了很多标准数组或者矩阵,如全数学中定义了很多标准数组或者矩阵,如全1数组、全零数组、对角阵等,在数组、全零数组、对角阵等,在Matlab中中有相应的函数用来生成这些标准数组。有相应的函数用来生成这些标准数组。1ones功能:生成全功能:生成全1数组,即数组中的元素都为数组,即数组中的元素都为1。格式:格式:Y=ones(n)生成生成nn的全的全1矩阵矩阵 Y=ones(m1,m2,mk)生成生成m1m2mk的全的全1数组数组 Y=ones(size(A)生成和数组生成和数组A同样
16、尺寸的全同样尺寸的全1数组数组2zeros功能:生成全功能:生成全0数组,即数组中的元素都为数组,即数组中的元素都为0。格式:同格式:同ones函数函数第14页,本讲稿共49页2.5 数组操作数组操作3rand功能:生成均匀分布随机数组。功能:生成均匀分布随机数组。格式:格式:Y=sand(state,v)设置随机发生器的初始状态为设置随机发生器的初始状态为v其他同其他同ones函数函数4randn功能:产生正态分布随机数组。功能:产生正态分布随机数组。格式:同格式:同rand函数函数5magic功能:产生魔方矩阵功能:产生魔方矩阵,不适用于高维数组。不适用于高维数组。格式:格式:M=magi
17、c(n)产生产生nn的魔方矩阵的魔方矩阵第15页,本讲稿共49页2.5 数组操作数组操作6eye功能:产生单位矩阵,即主对角线元素都为功能:产生单位矩阵,即主对角线元素都为1而其他元素都为而其他元素都为0的二维的二维 数组数组格式:格式:Y=eye(n)Y=eye(n,m)Y=eys(size(A)Y=eye(m,n,classname)说明:说明:classname是字符串,表示元素的数据类型名是字符串,表示元素的数据类型名 称,可取称,可取double,single,int8,uint8,int16,uint16,int32,uint32,int64,uint64。第16页,本讲稿共49页
18、2.5 数组操作数组操作7diag功能:产生对角阵,即矩阵的某个对角线元素不全为功能:产生对角阵,即矩阵的某个对角线元素不全为0,其他元素为,其他元素为0。格式:格式:X=diag(v,k)生成生成length(v)+k阶方阵,并在第阶方阵,并在第k条对角线放置元素条对角线放置元素vX=diag(v)生成生成length(v)阶方阵,并在主对角线放置元素阶方阵,并在主对角线放置元素vv=diag(X,k)返回方阵返回方阵X的第的第k条对角线元素构成的列向量条对角线元素构成的列向量v=diag(X)返回方阵返回方阵X的主对角线元素构成的列向量的主对角线元素构成的列向量说明:说明:v为行向量,表示
19、对角线元素;为行向量,表示对角线元素;k为对角线位置,为对角线位置,k=0 表示主对角线,表示主对角线,k0表示在主对角线上方的第表示在主对角线上方的第k条对角条对角 线,线,k0表示在主对角线下方的第表示在主对角线下方的第(-k)条对角线。条对角线。例例2.5.1第17页,本讲稿共49页2.5 数组操作数组操作二、二、数组操作数组操作 对数组的操作包括数组的扩展、收缩、重排、元素交换和子数组访问对数组的操作包括数组的扩展、收缩、重排、元素交换和子数组访问等。数组操作可以通过两种方式实现,一种是通过等。数组操作可以通过两种方式实现,一种是通过Matlab提供的运算提供的运算符(逗号,分号,括号
20、等)来实现,另外一种是使用符(逗号,分号,括号等)来实现,另外一种是使用Matlab提供的数提供的数组操作函数。下面介绍常用的数组操作函数。组操作函数。下面介绍常用的数组操作函数。1、cat功能:把大小相同的若干数组,沿着指定维的方向,串接成新数组。功能:把大小相同的若干数组,沿着指定维的方向,串接成新数组。格式:格式:C=cat(dim,A,B)C=cat(dim,A1,A2,A3,A4,.)说明:说明:A,B,A1,A2等为被串接数组,要求这些数组等为被串接数组,要求这些数组 同维;同维;dim表示串接方向,表示串接方向,1表示行,表示行,2表示列,表示列,3表示页,以此类推。表示页,以此
21、类推。第18页,本讲稿共49页2.5 数组操作数组操作2、fliplr 功能:沿着垂直中线,左右(功能:沿着垂直中线,左右(Left-Right)对称交换数组元素(不超)对称交换数组元素(不超过过2维)维)格式:格式:B=fliplr(A)3、flipud 功能:沿着水平中线,上下(功能:沿着水平中线,上下(Up-Down)对称交换数组元素(不超过)对称交换数组元素(不超过2维)维)格式:格式:B=flipud(A)4、rot90 功能:逆时针旋转二维数组。功能:逆时针旋转二维数组。格式:格式:B=rot90(A)逆时针旋转矩阵逆时针旋转矩阵90度度 B=rot90(A,k)逆时针旋转矩阵逆时
22、针旋转矩阵90*k度度第19页,本讲稿共49页2.5 数组操作数组操作5、repmat 功能:按指定维上的数目,分块铺放指定数组。功能:按指定维上的数目,分块铺放指定数组。格式:格式:B=repmat(A,m,n)沿着第沿着第1维铺放维铺放m个个A,第,第2维铺放维铺放n个个A B=repmat(A,m n)B=repmat(A,m n p.)6、reshape 功能:在总元素不变的前提下,重新安排数组各个维的长度,形成新数组。功能:在总元素不变的前提下,重新安排数组各个维的长度,形成新数组。格式:格式:B=reshape(A,m,n)B=reshape(A,m,n,p,.)B=reshape
23、(A,m n p.)B=reshape(A,.,.)说明:说明:A是待重新安排的数组;是待重新安排的数组;m,n,p等是新数组各个维等是新数组各个维 的长度;的长度;表示自动计算某个维的长度而无需用户指定。表示自动计算某个维的长度而无需用户指定。第20页,本讲稿共49页2.5 数组操作数组操作7、tril 功能:提取矩阵的下三角元素,生成下三角阵。功能:提取矩阵的下三角元素,生成下三角阵。格式:格式:L=tril(X)L=tril(X,k)说明:说明:X为待提取的矩阵;为待提取的矩阵;k为三角阵的分界线位置,含义同为三角阵的分界线位置,含义同diag8、triu 功能:提取矩阵的上三角元素,生
24、成上三角阵。功能:提取矩阵的上三角元素,生成上三角阵。格式:格式:L=triu(X)L=triu(X,k)说明:说明:X为待提取的矩阵;为待提取的矩阵;k为三角阵的分界线位置,为三角阵的分界线位置,含义同含义同diag函数。函数。例例2.5.2例例2.5.3第21页,本讲稿共49页2.6 数组运算与矩阵运算数组运算与矩阵运算一、数组运算一、数组运算Matlab定义了数组运算,数组运算是指对数组中的每个元素进行相同定义了数组运算,数组运算是指对数组中的每个元素进行相同的运算。数组运算可以通过的运算。数组运算可以通过Matlab提供的运算符和数组运算函数实现。提供的运算符和数组运算函数实现。1.用
25、数组运算符进行数组运算用数组运算符进行数组运算A+B 数组加法运算数组加法运算 A-B 数组减法运算数组减法运算A.*B 数组相乘,数组相乘,A和和B相同位置元素的乘积相同位置元素的乘积 作为结果数组的元素作为结果数组的元素A./B 数组相除,数组相除,A和和B相同位置元素相除作相同位置元素相除作 为结果数组的元素为结果数组的元素第22页,本讲稿共49页2.6 数组运算与矩阵运算数组运算与矩阵运算 A.B与与A./B相同相同A.p数组各元素求数组各元素求p次幂次幂A#BA、B数组对应元素间进行关系运算,数组对应元素间进行关系运算,#代表关系运算符代表关系运算符ABA、B数组对应元素间进行逻辑运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 数据结构 及其 运算 优秀 课件
限制150内