【文档说明】matlab基本数据结构以及矩阵基本操作课件.pptx,共(103)页,937.719 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-6048.html
以下为本文档部分文字说明:
本章着重介绍的MATLAB基础知识包括:➢数据类型;➢基本矩阵操作;➢运算符;➢字符串处理函数。目录2.1数据类型2.2基本矩阵操作2.3运算符和特殊符号2.4字符串处理函数习题2.1数据类型1.数值类型2.逻辑类型3.字符和字符串类型4.结构体类型MATLAB中定义了很多种
数据类型。本节讨论MATLAB中主要的数据类型及其使用方法。在MATLAB中有15种基本数据类型,每种基本数据类型均以数组/矩阵的形式出现。1.数值类型数值类型包含➢整数;➢浮点数;➢复数;➢Inf;➢NaN(1)整数类型MATL
AB支持1、2、4和8字节的有符号整数和无符号整数。数据类型的名称、表示范围和转换函数如下表所示。(2)浮点数类型MATLAB有单精度和双精度两种浮点数。其名称、存储空间、表示范围和转换函数如下表所示。(3)复数类型复数包含实部和虚部。在MATLA
B中可以用i或者j来表示虚部。(4)Inf和NaN➢Inf和-Inf分别表示正无穷大和负无穷大。除法运算中除数为0或者运算结果溢出都会导致inf或-inf的运行结果。➢在MATLAB中用NaN(NotaNumber)来表示一个既不是实数也不是复数的数值。2.逻辑类型在MATLAB中逻辑
类型包含true和false,分别由1和0表示。在MATLAB中用函数logical()将任何非零的数值转换为true(即1),将数值0转换为false(即0)。3.字符和字符串类型在MATLAB中,数据类型(char)表示一个字符。一个c
har类型的1n数组称为字符串string。4.结构体类型结构体类型是一种由若干属性(field)组成的MATLAB数组,其中的每个属性可以是任意数据类型。下图表示了一个结构体(Personel),它包括3个属性(Name、Score和Salary),其中Na
me是一个字符串,Score是一个数值,Salary是一个15的向量。(1)结构体数组的构造构造一个结构体(数组)有两种方法。➢利用赋值语句通过赋值语句为结构体中的每个指定属性赋值,从而构造结构体。➢利用函数struct()在MATLAB中,函数struct()的具体用法如下:其中,
strArray、'field'和val分别表示结构体名、属性名和相应的属性值。(2)结构体数组的访问通过结构体数组的下标引用,可以访问任意元素的所有属性,同时可以对属性进行赋值。2.2基本矩阵操作2.2.1矩
阵的构造2.2.2矩阵大小的改变2.2.3矩阵下标引用2.2.4矩阵信息的获取2.2.5矩阵结构的改变2.2.6稀疏矩阵在MATLAB中,所有的数据均以二维、三维或高维矩阵的形式存储,每个矩阵的单元可以是数值类型、逻辑类
型、字符类型或者其他任何数据类型。➢对于标量,可以用11矩阵来表示;➢对于一组n个数据,可以用1n矩阵来表示;➢对于多维数组,可以用多维矩阵来表示。在MATLAB中,用命令whos来显示数据的类型、存储空间等信息。2.2.1矩阵的构
造1.简单矩阵构造2.特殊矩阵构造3.向量构造1.简单矩阵构造最简单的方法是采用矩阵构造符“[]”。构造1n矩阵(行向量)时,可以将各元素依次放入矩阵构造符[]内,并且以空格或者逗号分隔;构造mn矩阵时,每行如上处理,并且行与行之间用分号分隔
。2.特殊矩阵构造在MATLAB中还提供一些函数用来构造特殊矩阵,这些函数如下表所示。续表3.向量构造最简单的方法是采用向量构造符“:”,其常用的用法如下。(1)a:b返回以a为起点,以1为步长,且所有取值在a与b之间的向量。(2)a:s:b返
回以a为起点,以s为步长,且所有取值在a与b之间的向量。2.2.2矩阵大小的改变1.矩阵的合并2.矩阵行列的删除1.矩阵的合并矩阵的合并就是把两个或者两个以上的矩阵连接成一个新矩阵。矩阵构造符[]可用于构造矩阵,并可以作为一个矩阵合并操作符。➢表达式C=[AB]在水平方向合并矩阵
A和B;➢表达式C=[A;B]在竖直方向合并矩阵A和B。具有相同行数的两个矩阵,合并为一个新矩阵不具有相同行数的两个矩阵,不允许合并为一个新矩阵123456457810116912+=12345645781011691
23×23×33×5123456457869+≠1234564578693×22×3除了矩阵合并符“[]”外,还可以使用矩阵合并函数。矩阵合并函数的描述和基本调用格式如下表所示。2.矩阵行列的删除要删除矩阵的某一行或者是某一列,只需将该行或者该列赋予一个空矩阵[]
即可。2.2.3矩阵下标引用1.访问单个元素2.线性引用元素3.访问多个元素本小节将介绍通过矩阵下标来存取元素值的方法,包括访问单个元素、线性引用元素和访问多个元素等。1.访问单个元素2.线性引用元素➢对于矩阵A,线性引用元素的格式为A(k)。通常这样的引用用于行向量或
列向量,但也可用于二维矩阵。➢MATLAB按列优先排列的一个长列向量格式(线性引用元素)来存储矩阵元素。3.访问多个元素操作符“:”可以用来表示矩阵的多个元素。若A是二维矩阵,其主要用法如下:➢A(:,:)返回矩阵A的所有元素。➢
A(i,:)返回矩阵A第i行的所有元素。➢A(i,k1:k2)返回矩阵A第i行的自k1到k2列的所有元素。➢A(:,j)返回矩阵A第j列的所有元素。➢A(k1:k2,j)返回矩阵A第j列的自k1到k2行的所有元素。若A是多维矩阵,也可以通过类似的方法实现对其访问。2.2.4矩阵信息的获取1
.矩阵尺寸信息2.元素的数据类型3.矩阵的数据结构本小节介绍如何获取矩阵的信息,包括矩阵的尺寸、元素的数据类型和矩阵的数据结构等。1.矩阵尺寸信息矩阵尺寸函数可以得到矩阵的形状和大小信息,这些函数如下表所示。2.元素的数据类型查询元素数据类型信息的部分函数如下表所示。
3.矩阵的数据结构判断矩阵是否为某种指定数据结构的函数如下表所示。2.2.5矩阵结构的改变改变矩阵结构的函数表2.2.6稀疏矩阵1.稀疏矩阵的创建2.查看稀疏矩阵3.稀疏矩阵的运算规则➢在MATLAB中,可以用满矩阵存储方式和稀疏矩阵存储方式
来存储矩阵。➢若一个矩阵只有少数的元素非零,称为稀疏矩阵。稀疏矩阵非零元素及其对应的下标来表示。➢用户可以创建双精度、复数和逻辑等类型的稀疏矩阵。1.稀疏矩阵的创建在MATLAB中,用函数sparse()实现满矩阵到稀疏矩阵的转换。➢在MATLAB中用函数full()实现稀疏矩阵到满
矩阵的转换。➢在MATLAB中,还可以用函数sparse()直接创建稀疏矩阵,其具体用法如下。S=sparse(i,j,s,m,n),其中,i和j分别是稀疏矩阵非零元素的行和列下标,s为相应的非零元素的
值,m和n分别是矩阵的行数和列数。MATLAB还提供一些函数用于创建特殊稀疏矩阵,这些函数如下表所示。2.查看稀疏矩阵MATLAB提供一些函数用于查看稀疏矩阵的信息,如下表所示。下面的例子都是基于MATLAB自带的稀疏矩阵w
est0479。3.稀疏矩阵的运算规则在MATLAB中的各种命令和函数都可以用于稀疏矩阵的运算,并且遵循如下的一些约定。(1)把矩阵变为标量或者定长向量的函数总是给出满矩阵;(2)对于标量或者定长向量变换到矩阵的函数,如函数ze
ros()、ones()、eye()、rand()等总是给出满矩阵;(3)从矩阵到矩阵的变换函数将以原矩阵的形式出现;(4)在参与矩阵扩展的子矩阵(如[AB;CD])中,只要有一个是稀疏矩阵,那么所得的结果也是稀疏矩阵;(5)
在矩阵引用中,将仍以原矩阵形式给出结果。2.3运算符和特殊符号2.3.1算数运算符2.3.2关系运算符2.3.3逻辑运算符2.3.4运算优先级在MATLAB中提供了丰富的运算符,包括算数、关系和逻辑等3种运算符。2.3.1算数运算符在MATLAB中,算数运算符的
用法和功能如下表所示。续表补充说明A^B的用法如下:➢当A和B都为矩阵时,此运算无定义;➢当A和B都是标量时,表示标量A的B次幂;➢当A是标量且B为矩阵时,表示标量A的B中各元素次幂;➢当A为方阵且B为正整数时,表示矩阵A
的B次乘积;➢当A为方阵且B为负整数时,表示矩阵A逆的负B次乘积;➢当A为可对角化的方阵且B为非整数时,有如下表达式:2.3.2关系运算符MATLAB中关系运算符的用法和功能如下表所示。值得注意的是,关系运算符只针对两个
相同长度的矩阵,或其中之一是标量的情况进行运算。➢对于前者,是指两个矩阵的对应元素进行比较,返回具有相同长度的矩阵;➢对于后者,是指这个标量与另一个矩阵的每元素进行运算。关系运算C=f(A,B)的运算结果只有0和1两种情况,其中,函数f()表示关系运算符,0表示不满足条件,1表示满
足条件。2.3.3逻辑运算符MATLAB提供元素方式和比特方式等逻辑运算符。元素方式逻辑运算符的用法和功能如下表所示,其中例子采用如下矩阵:元素方式逻辑运算符&'、'|'和'~'与函数and()、or()和not()是等价的。比特方式逻辑运算符只
接受逻辑和非负整数类型的输入变量,它是针对输入变量的二进制进行逻辑运算。比特方式逻辑运算符的用法和功能如下表所示,表中例子采用A=28和B=200,其对应的二进制分别为11100和11001000。2.3.4运算优先级➢运算符的优先级决定表达式求值顺序;➢具有相同优先
级的运算符从左到右依次进行运算;➢不同优先级的运算符采用先进行优先高的运算。运算符的优先等级表由表中可以看到,括号的优先级别最高,因此可以用括号来改变默认的优先等级。2.4字符串处理函数2.4.1字符串的构造2.4.2字
符串的比较2.4.3字符串的查找和替换2.4.4字符串与数值间的转换MATLAB提供了丰富的字符串操作,包括字符串的创建、合并、比较、查找以及与数值之间的转换。2.4.1字符串的构造在MATLAB中,可以用一对单引号来表示字符串。2.4.
2字符串的比较1.字符串比较函数2.用关系运算符比较字符串在MATLAB中提供了对字符串、字符串数组和字符子串的比较功能。1.字符串比较函数在MATLAB中,字符串比较函数如下表所示。2.用关系运算符比较字符串在MATL
AB中,可以对字符串运用关系运算符,但要求两个字符串具有相同的长度,或者其中一个是标量。2.4.3字符串的查找和替换MATLAB提供的一些字符串查找和替换函数如下表所示。2.4.4字符串与数值间的转换MATLAB提供的一些数值转换为字符串函数如下表所示。续表MAT
LAB提供的一些字符串转换为数值函数如下表所示。习题1.计算复数3+4i与5−6i的乘积。2.构建结构体Students,属性包含Name、Age和Email,数据包括{'Zhang',18,[‘zhang@163
.com’,‘zhang@263.com’]}、{‘Wang’,21,[]}和{‘Li’,[],[]},构建后读取所有Name属性值,并且修改‘Zhang’的Age属性值为19。3.用满矩阵和稀疏矩阵存储方式分别构造
下述矩阵:4.采用向量构造符得到向量[1,5,9,…,41]。5.按水平和竖直方向分别合并下述两个矩阵:6.分别删除第5题两个结果的第2行。7.分别将第5题两个结果的第2行最后3列的数值改为[111213]。8.分别查看第5题两个结果的各方向长度。
9.分别判断pi是否为字符串和浮点数。10.分别将第5题两个结果均转换为29的矩阵。11.计算第5题矩阵A的转秩。12.分别计算第5题矩阵A和B的A+B、A.*B和A\B。13.判断第5题矩阵A和B中哪些元素值不小于4。14.分别用函数strcat()和矩阵合并符合并
如下字符串:'Thepictureis'和'verygood'。15.创建字符串数组,其中元素分别为‘Picture’和'Pitch'。16.在第14题结果中查找字符串'e'。17.在第15题结果中匹配字符串'Pi
'。18.将字符串'verygood'转换为等值的整数。19.将十进制的50转换为二进制的字符串。20.将十六进制的字符串‘50’转换为三进制的整数。