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