
matlab实用教程2.ppt
104页matlab实用教程实用教程2 本章着重介绍的MATLAB基础知识包括:Ø 数据类型;Ø 基本矩阵操作;Ø 运算符;Ø 字符串处理函数目录 2.1 数 据 类 型 2.2 基本矩阵操作 2.3 运算符和特殊符号 2.4 字符串处理函数 习 题2.1 数 据 类 型 1.数值类型 2.逻辑类型 3.字符和字符串类型 4.结构体类型 MATLAB中定义了很多种数据类型本节讨论MATLAB中主要的数据类型及其使用方法 在MATLAB中有15种基本数据类型,每种基本数据类型均以数组/矩阵的形式出现 1.数值类型 数值类型包含Ø 整数;Ø 浮点数;Ø 复数;Ø Inf;Ø NaN(1)整数类型 MATLAB支持1、2、4和8字节的有符号整数和无符号整数数据类型的名称、表示范围和转换函数如下表所示(2)浮点数类型 MATLAB有单精度和双精度两种浮点数。
其名称、存储空间、表示范围和转换函数如下表所示 (3)复数类型 复数包含实部和虚部在MATLAB中可以用i或者j来表示虚部(4)Inf和NaNØ Inf和-Inf分别表示正无穷大和负无穷 大除法运算中除数为0或者运算结果溢 出都会导致inf或-inf的运行结果Ø 在MATLAB中用NaN(Not a Number) 来表示一个既不是实数也不是复数的数 值2.逻辑类型 在 MATLAB中 逻 辑 类 型 包 含 true和false,分别由1和0表示在MATLAB中用函数logical()将任何非零的数值转换为true(即1),将数值0转换为false(即0)3.字符和字符串类型 在MATLAB中,数据类型(char)表示一个字符一个char类型的1n数组称为字符串string 4.结构体类型 结 构 体 类 型 是 一 种 由 若 干 属 性(field)组成的MATLAB数组,其中的每个属性可以是任意数据类型 下图表示了一个结构体(Personel),它 包 括 3个 属 性 ( Name、 Score和Salary),其中Name是一个字符串,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=[A B]在水平方向合并矩阵A和B;Ø 表达式C=[A;B]在竖直方向合并矩阵A和B 具有相同行数的两个矩阵,合并为一个新矩阵 不具有相同行数的两个矩阵,不允许合并为一个新矩阵 除了矩阵合并符“[]”外,还可以使用矩阵合并函数矩阵合并函数的描述和基本调用格式如下表所示 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自带的稀疏矩阵west0479 3.稀疏矩阵的运算规则 在MATLAB中的各种命令和函数都可以用于稀疏矩阵的运算,并且遵循如下的一些约定1)把矩阵变为标量或者定长向量的函数总 是给出满矩阵;(2)对于标量或者定长向量变换到矩阵的函 数,如函数zeros()、ones()、 eye()、rand()等总是给出满矩阵;(3)从矩阵到矩阵的变换函数将以原矩阵的 形式出现;(4)在参与矩阵扩展的子矩阵(如[ A B;C D])中,只要有一个是稀疏矩阵,那 么所得的结果也是稀疏矩阵;(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和110010002.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.用关系运算符比较字符串 在MATLAB中,可以对字符串运用关系运算符,但要求两个字符串具有相同的长度,或者其中一个是标量 2.4.3 字符串的查找和替换 MATLAB提供的一些字符串查找和替换函数如下表所示 2.4.4 字符串与数值间的转换 MATLAB提供的一些数值转换为字符串函数如下表所示 续表 MATLAB提供的一些字符串转换为数值函数如下表所示 习 题1.计算复数3+4i与5−6i的乘积2.构建结构体Students,属性包含Name、Age 和Email,数据包括{'Zhang',18, [‘zhang@’, ‘zhang@’]}、 {‘Wang’,21, []}和{‘Li’,[], []},构建后读取 所有Name属性值,并且修改‘Zhang’的Age属 性值为19。
3.用满矩阵和稀疏矩阵存储方式分别构造下述矩 阵:4.采用向量构造符得到向量[1,5,9,…,41]5.按水平和竖直方向分别合并下述两个矩阵: 6. 分别删除第5题两个结果的第2行7. 分别将第5题两个结果的第2行最后3列的数值 改为[11 12 13]8. 分别查看第5题两个结果的各方向长度9. 分别判断pi是否为字符串和浮点数10.分别将第5题两个结果均转换为29的矩阵11.计算第5题矩阵A的转秩12.分别计算第5题矩阵A和B的A+B、A.* B和 A\B13.判断第5题矩阵A和B中哪些元素值不小于414.分别用函数strcat()和矩阵合并符合并如下字 符串:' The picture is '和' very good '15.创建字符串数组,其中元素分别为‘Picture ’和 'Pitch '16.在第14题结果中查找字符串'e'17.在第15题结果中匹配字符串'Pi'18.将字符串'very good'转换为等值的整数19.将十进制的50转换为二进制的字符串20.将十六进制的字符串‘50’转换为三进制的整 数。












