《MATLAB基础及编程》PPT课件.ppt

上传人:san****019 文档编号:7348908 上传时间:2020-03-20 格式:PPT 页数:74 大小:244.61KB
返回 下载 相关 举报
《MATLAB基础及编程》PPT课件.ppt_第1页
第1页 / 共74页
《MATLAB基础及编程》PPT课件.ppt_第2页
第2页 / 共74页
《MATLAB基础及编程》PPT课件.ppt_第3页
第3页 / 共74页
点击查看更多>>
资源描述
第2讲MATLAB矩阵及其运算 2 1变量和数据操作2 2MATLAB矩阵2 3MATLAB运算2 4矩阵分析相关函数2 5字符串 结构型和单元型数据 2 1变量和数据操作 2 1 1变量与赋值1 变量命名在MATLAB6 5中 变量名是以字母开头 后接字母 数字或下划线的字符序列 最多63个字符 在MATLAB中 变量名区分字母的大小写 2 赋值语句 1 变量 表达式MATLAB中变量不需要预先声明 可以直接通过赋值表达式定义 2 表达式其中表达式是用运算符将有关运算量连接起来的式子 其结果是一个矩阵 例2 1计算表达式的值 并显示计算结果 在MATLAB命令窗口输入命令 x 1 2i y 3 sqrt 17 z cos abs x y sin 78 pi 180 x abs y 其中pi和i都是MATLAB预先定义的变量 分别代表代表圆周率 和虚数单位 输出结果是 z 0 3488 0 3286i 2 1 2预定义变量 在MATLAB工作空间中 还驻留几个由系统本身定义的变量 常见编程错误 不要重定义有意义的预定义变量 否则将后患无穷 制造成出小而难以发现的错误特别是不要用i和j做循环变量 2 1 3内存变量的管理 MATLAB工作空间窗口 workspace 专门用于内存变量的管理 在工作空间窗口中可以显示 删除 编辑所有内存变量clear命令用于删除MATLAB工作空间中的变量 who命令显示出驻留变量的名称whos在给出变量名的同时 还给出它们的大小 所占字节数及数据类型等信息 保存变量 利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来 扩展名是 mat MAT文件的生成和装入由save和load命令来完成 常用格式为 save文件名 变量名表 append ascii load文件名 变量名表 ascii 其中 文件名可以带路径 可省略扩展名 mat 多个变量名之间以空格分隔 当变量名表省略时 保存或装入全部变量 ascii选项使文件以ASCII格式处理 省略该选项时文件将以二进制格式处理 append选项控制将变量追加到MAT文件中 例 a rand 100 100 savea mataclearaloada mat 2 1 4常用数学函数使用说明 三角函数以弧度为单位计算 abs函数可以求实数的绝对值 复数的模 字符串的ASCII码值 用于取整的函数有fix floor ceil round 要注意它们的区别 rem与mod函数的区别 函数的自变量可以为矩阵变量 运算法则是将函数逐项作用于矩阵的元素上 因而运算的结果是一个与自变量同维数的矩阵 2 1 5变量的数据类型 MATLAB提供了14种数据类型 ARRAY NUMERIC cell structure javaclass functionhandle int8 uint8int16 uint16int32 uint32 double sparse single char logical 数值型变量默认是double型 matlab中绝大多数的算术运算只支持double型 即对非double型的数据必须转化为double型运算例 比较下列语句的运行结果a pia int8 pi a double int8 pi a pi a char pi 94 a logical pi 2 1 5数据的输出格式 最简单的方法是去掉语句末的分号 它将计算结果显示在命令窗口 TheCommandWindows 中 MATLAB的默认输出格式是显示到小数点后四位 如果一个数太大或太小 那么将会以科学记数法的形式显示 改变默认输出格式要用到format命令 可根据表2 3改变数据的输出格式 disp函数disp需要一个数组参数 它将值将显示在命令窗口 TheCommandWindows 中 如果这个数组是字符型 char 那么包含在这个数组中的字符串将会打印在命令窗口 TheCommandWindows 中 例 str thevalueofpi num2str pi disp str 用fprintf函数格式化输出数据格式 fprintf format data 其中format用于代表一个描述打印数据方式的子符串 data代表要打印的一个或多个标量或数组 例 函数fprintf Thevalueofpiis 6 2f n pi fprintf函数有一个重大的局限性 只能显示复数的实部 2 1 6用户输入语句 input语句格式1 a input prompt 功能 以 prompt 为提示字符串 等待用户输入 将输入的值赋给变量a 格式2 a input prompt s 功能 以 prompt 为提示字符串 等待用户输入 将输入内容作为字符串赋给变量a 2 2MATLAB矩阵 2 2 1矩阵的建立1 直接输入法将矩阵的元素用方括号括起来 按矩阵行的顺序输入各元素 同一行的各元素之间用空格或逗号分隔 不同行的元素之间用分号分隔 例 1 2 3 4 5 6 7 8 2 利用冒号表达式建立一个向量冒号表达式可以产生一个行向量 一般格式是 e1 e2 e3其中e1为初始值 e2为步长 e3为终止值 如果步长为1 则可省略 在MATLAB中 还可以用linspace函数产生行向量 其调用格式为 linspace a b n 其中a和b是生成向量的第一个和最后一个元素 n是元素总数 显然 linspace a b n 与a b a n 1 b等价 3 特殊矩阵常用的产生通用特殊矩阵的函数有 zeros 产生全0矩阵 零矩阵 ones 产生全1矩阵 幺矩阵 eye 产生单位矩阵 rand 产生0 1间均匀分布的随机矩阵 randn 产生均值为0 方差为1的标准正态分布随机矩阵 其它特殊矩阵 1 幻方矩阵其每行 每列及两条对角线上的元素和都相等 对于n阶幻方阵 其元素由1 2 3 n2共n2个整数组成 函数magic n 其功能是生成一个n阶幻方阵 2 范得蒙矩阵范得蒙 Vandermonde 矩阵最后一列全为1 倒数第二列为一个指定的向量 其他各列是其后列与倒数第二列的点乘积 可以用一个指定向量生成一个范得蒙矩阵 函数vander V 生成以向量V为基础向量的范得蒙矩阵 例如 A vander 1 2 3 5 3 希尔伯特矩阵在MATLAB中 生成希尔伯特矩阵的函数是hilb n 使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果 MATLAB中 有一个专门求希尔伯特矩阵的逆的函数invhilb n 其功能是求n阶的希尔伯特矩阵的逆矩阵 4 托普利兹矩阵托普利兹 Toeplitz 矩阵除第一行第一列外 其他每个元素都与左上角的元素相同 toeplitz x y 它生成一个以x为第一列 y为第一行的托普利兹矩阵 这里x y均为向量 两者不必等长 toeplitz x 用向量x生成一个对称的托普利兹矩阵 例如 T toeplitz 1 6 2 2 2矩阵结构操作1 矩阵元素引用 通过下标 Index 引用矩阵的元素 例如A 3 2 200采用矩阵元素的序号 Subscript 来引用矩阵元素 矩阵元素的序号就是相应元素在内存中的排列顺序 在MATLAB中 矩阵元素按列存储 先第一列 再第二列 依次类推 例如 A 1 2 3 4 5 6 A 3 ans 2序号 Index 与下标 Subscript 是一一对应的 以m n矩阵A为例 矩阵元素A i j 的序号为 j 1 m i 其相互转换关系也可利用IND sub2ind siz I J 和 I J ind2sub siz IND 函数求得 通过逻辑下标引用 A 1 4 A logical 0 1 0 2 矩阵分块 1 利用冒号表达式获得子矩阵A j 表示取A矩阵的第j列全部元素 A i 表示A矩阵第i行的全部元素 A i j 表示取A矩阵第i行 第j列的元素 A i i m 表示取A矩阵第i i m行的全部元素 A k k m 表示取A矩阵第k k m列的全部元素 A i i m k k m 表示取A矩阵第i i m行内 并在第k k m列中的所有元素 此外 还可利用一般向量和end运算符来表示矩阵下标 从而获得子矩阵 end表示某一维的末尾元素下标 如 A 1 end 表示将A的所有元素按列顺序排成一维向量 2 利用空矩阵删除矩阵的元素在MATLAB中 定义 为空矩阵 给变量X赋空矩阵的语句为X 删除矩阵A 1 2 3 4 中第3个元素 A 3 删除A rand 3 的第一行 A 1 注意 X 与clearX不同 clear是将X从工作空间中删除 而空矩阵则存在于工作空间中 只是维数为0 3 矩阵的合并 A B 得矩阵 AB A B 得矩阵cat函数 2 3MATLAB运算 1 3 1算术运算1 基本算术运算MATLAB的基本算术运算有 加 减 乘 右除 左除 乘方 注意 运算是在矩阵意义下进行的 单个数据的算术运算只是一种特例 1 矩阵加减运算假定有两个矩阵A和B 则可以由A B和A B实现矩阵的加减运算 运算规则是 若A和B矩阵的维数相同 则可以执行矩阵的加减运算 A和B矩阵的相应元素相加减 如果A与B的维数不相同 则MATLAB将给出错误信息 提示用户两个矩阵的维数不匹配 2 矩阵乘法假定有两个矩阵A和B 若A为m n矩阵 B为n p矩阵 则C A B为m p矩阵 3 矩阵除法在MATLAB中 有两种矩阵除法运算 和 分别表示左除和右除 A B等效于A的逆左乘B矩阵 当A是方阵时 理论上等价于inv A B B A等效于A矩阵的逆右乘B矩阵 等效于 A B 当A是方阵时 理论上等价于B inv A 对于含有标量的运算 两种除法运算的结果不同 对于矩阵运算 一般A B A B 4 矩阵的乘方一个矩阵的乘方运算可以表示成A x 要求A为方阵 x为标量 2 点运算其运算符是在有关算术运算符前面加点 所以叫点运算 点运算符有 和 两矩阵进行点运算是指它们的对应元素进行相关运算 要求两矩阵的维数相同 或其中一个为标量 2 3 2关系运算MATLAB提供了6种关系运算符 大于 大于或等于 等于 不等于 它们的含义不难理解 关系运算符的运算法则为 1 当两个比较量是标量时 直接比较两数的大小 若关系成立 关系表达式结果为1 否则为0 2 当参与比较的量是两个维数相同的矩阵时 比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行 并给出元素比较结果 最终的关系运算的结果是一个维数与原矩阵相同的矩阵 它的元素由0或1组成 3 当参与比较的一个是标量 而另一个是矩阵时 则把标量与矩阵的每一个元素按标量关系运算规则逐个比较 并给出元素比较结果 最终的关系运算的结果是一个维数与原矩阵相同的矩阵 它的元素由0或1组成 例2 8产生5阶随机方阵A 其元素为 10 90 区间的随机整数 然后判断A的元素是否能被3整除 1 生成5阶随机方阵A A fix 80 rand 5 10 2 判断A的元素是否可以被3整除 P rem A 3 0 其中 rem A 3 是矩阵A的每个元素除以3的余数矩阵 此时 0被扩展为与A同维数的零矩阵 P是进行等于 比较的结果矩阵 逻辑非是单目运算符 也服从矩阵运算规则 在算术 关系 逻辑运算中 算术运算优先级最高 逻辑运算优先级最低 例2 9建立矩阵A 然后找出大于4的元素的位置 1 建立矩阵A A 4 65 54 0 6 56 0 67 45 0 2 找出大于4的元素及其位置 i1 i2 a find A 4 2 4 1对角阵与三角阵1 对角阵只有对角线上有非0元素的矩阵称为对角矩阵 对角线上的元素相等的对角矩阵称为数量矩阵 对角线上的元素都为1的对角矩阵称为单位矩阵 2 4矩阵分析相关函数 1 提取矩阵的对角线元素设A为m n矩阵 diag A 函数用于提取矩阵A主对角线元素 产生一个具有min m n 个元素的列向量 diag A 函数还有一种形式diag A k 其功能是提取第k条对角线的元素 2 构造对角矩阵设V为具有m个元素的向量 diag V 将产生一个m m对角矩阵 其主对角线元素即为向量V的元素 diag V 函数也有另一种形式diag V k 其功能是产生一个n n n m k 对角阵 其第k条对角线的元素即为向量V的元素 例 X magic 3 diag diag X sum diag X m 3diag m m diag ones 2 m 1 1 diag ones 2 m 1 1 例2 10先建立5 5矩阵A 然后将A的第一行元素乘以1 第二行乘以2 第五行乘以5 A rand 5 D diag 1 5 D A 用D左乘A 对A的每行乘以一个指定常数 2 三角阵三角阵又进一步分为上三角阵和下三角阵 所谓上三角阵 即矩阵的对角线以下的元素全为0的一种矩阵 而下三角阵则是对角线以上的元素全为0的一种矩阵 上三角矩阵求矩阵A的上三角阵的函数是triu A triu A 函数也有另一种形式triu A k 其功能是求矩阵A的第k条对角线以上的元素 例如 提取矩阵A的第2条对角线以上的元素 形成新的矩阵B 下三角矩阵提取矩阵A的下三角矩阵的函数是tril A 和tril A k 其用法与提取上三角矩阵的函数triu A 和triu A k 完全相同 2 4 2矩阵的转置与旋转1 矩阵的转置共轭转置运算符是单撇号 或ctranspose 只做转置不做共轭的运算符是 或transpose 2 矩阵的旋转利用函数rot90 A k 将矩阵A逆时针旋转k 90 当k为1时可省略 3 矩阵的左右翻转对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换 第二列和倒数第二列调换 依次类推 MATLAB对矩阵A实施左右翻转的函数是fliplr A 4 矩阵的上下翻转MATLAB对矩阵A实施上下翻转的函数是flipud A 2 4 3矩阵的逆与伪逆1 矩阵的逆inv A 2 矩阵的伪逆如果矩阵A不是一个方阵 或者A是一个非满秩的方阵时 矩阵A没有逆矩阵 但可以找到一个与A的转置矩阵A 同型的矩阵B 使得 A B A AB A B B此时称矩阵B为矩阵A的伪逆 也称为广义逆矩阵 在MATLAB中 求一个矩阵伪逆的函数是pinv A 2 4 4方阵的行列式求方阵A所对应的行列式的值的函数是det A 2 4 5矩阵的秩与迹1 矩阵的秩矩阵线性无关的行数与列数称为矩阵的秩 在MATLAB中 求矩阵秩的函数是rank A 2 矩阵的迹矩阵的迹等于矩阵的对角线元素之和 也等于矩阵的特征值之和 在MATLAB中 求矩阵的迹的函数是trace A 2 4 6向量和矩阵的范数矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度 范数有多种方法定义 其定义不同 范数值也就不同 1 向量的3种常用范数及其计算函数在MATLAB中 求向量范数的函数为 1 norm V 或norm V 2 计算向量V的2 范数 2 norm V 1 计算向量V的1 范数 3 norm V inf 计算向量V的 范数 2 MATLAB提供了求3种矩阵范数的函数 其函数调用格式与求向量的范数的函数完全相同 2 4 7矩阵的条件数在MATLAB中 计算矩阵A的3种条件数的函数是 1 cond A 1 计算A的1 范数下的条件数 2 cond A 或cond A 2 计算A的2 范数数下的条件数 3 cond A inf 计算A的 范数下的条件数 2 4 8矩阵的特征值与特征向量计算矩阵A的特征值和特征向量的函数是eig A eigs A k 1 E eig A 求矩阵A的全部特征值 构成向量E 2 V D eig A 求矩阵A的全部特征值 构成对角阵D 并求A的所有特征向量 3 V D eigs A k 求矩阵A的前k个特征值构成对角阵D 并求A的前k个特征向量 例2 12用求特征值的方法解方程 3x5 7x4 5x2 2x 18 0p 3 7 0 5 2 18 A compan p A的伴随矩阵x1 eig A 求A的特征值x2 roots p 直接求多项式p的零点 2 5矩阵的超越函数1 矩阵平方根sqrtmsqrtm A 计算矩阵A的平方根 2 矩阵对数logmlogm A 计算矩阵A的自然对数 3 矩阵指数expm的功能是求矩阵指数eA 4 普通矩阵函数funmfunm A fun 用来计算直接作用于矩阵A的由函数句柄fun指定的超越函数值 当fun取sqrt时 funm A sqrt 可以计算矩阵A的平方根 与sqrtm A 的计算结果一样 2 6稀疏矩阵2 6 1矩阵存储方式MATLAB的矩阵有两种存储方式 完全存储方式和稀疏存储方式 1 完全存储方式完全存储方式是将矩阵的全部元素按列存储 以前讲到的矩阵的存储方式都是按这个方式存储的 此存储方式对稀疏矩阵也适用 2 稀疏存储方式稀疏存储方式仅存储矩阵所有的非零元素的值及其位置 即行号和列号 在MATLAB中 稀疏存储方式也是按列存储的 注意 在讲稀疏矩阵时 有两个不同的概念 一是指矩阵的0元素较多 该矩阵是一个具有稀疏特征的矩阵 二是指采用稀疏方式存储的矩阵 2 6 2稀疏存储方式的产生1 将完全存储方式转化为稀疏存储方式函数A sparse S 将矩阵S转化为稀疏存储方式的矩阵A sparse函数还有其他一些调用格式 sparse m n 生成一个m n的所有元素都是0的稀疏矩阵 sparse u v S u v S是3个等长的向量 S是要建立的稀疏矩阵的非0元素 u i v i 分别是S i 的行和列下标 该函数建立一个max u 行 max v 列并以S为稀疏元素的稀疏矩阵 此外 还有一些和稀疏矩阵操作有关的函数 例如 u v S find A 返回矩阵A中非0元素的下标和元素 这里产生的u v S可作为sparse u v S 的参数 nnz A 返回矩阵A中非零元素个数 full A 返回和稀疏存储矩阵A对应的完全存储方式矩阵 spy A 显示矩阵A中非零元素分布图 例 A diag 1 10 B sparse A C full B whosABCnnz B spy B 2 产生稀疏存储矩阵只需把稀疏矩阵的非0元素及其所在行和列的位置表示出来后 就可以由MATLAB自己产生对应的稀疏矩阵 这需要使用spconvert函数 调用格式为 B spconvert A 其中A为一个m 3或m 4的矩阵 其每行表示一个非0元素 m是非0元素的个数 A每个元素的意义是 i 1 第i个非0元素所在的行 i 2 第i个非0元素所在的列 i 3 第i个非0元素值的实部 i 4 第i个非0元素值的虚部 若矩阵的全部元素都是实数 则无须第四列 例2 15根据表示稀疏矩阵的矩阵A 产生一个稀疏存储方式矩阵B 命令如下 A 2 2 1 3 1 1 4 3 3 5 3 8 6 6 12 B spconvert A 3 单位矩阵的稀疏存储单位矩阵只有对角线元素为1 其他元素都为0 是一种具有稀疏特征的矩阵 函数eye产生一个完全存储方式的单位矩阵 MATLAB还有一个产生稀疏存储方式的单位矩阵的函数 这就是speye 函数speye m n 返回一个m n的稀疏存储单位矩阵 2 6 3稀疏矩阵的运算规则稀疏存储矩阵只是矩阵的存储方式不同 它的运算规则与普通矩阵是一样的 所以 在运算过程中 稀疏存储矩阵可以直接参与运算 当参与运算的对象不全是稀疏存储矩阵时 所得结果一般是完全存储形式 2 5字符串 结构型和单元型数据 2 5 1字符串MATLAB中字符串必须放在单引号对中 且以ASCII码形式存储的 MATLAB将字符串当作一个行向量 每个元素对应一个字符 其标识方法和数值向量相同 也可以建立多行字符串矩阵 abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵 相反 char函数可以把ASCII码矩阵转换为字符串矩阵 例 A abcd A 3 abs A double A char abs A 例2 13建立一个字符串向量 然后对该向量做如下处理 1 取第1 5个字符组成的子字符串 2 将字符串倒过来重新排列 3 将字符串中的小写字母变成相应的大写字母 其余字符不变 4 统计字符串中小写字母的个数 命令如下 ch ABc123d4e56Fg9 subch ch 1 5 取子字符串revch ch end 1 1 将字符串倒排k find ch a 将小写字母变成相应的大写字母char ch length k 统计小写字母的个数 eval函数与字符串有关的另一个重要函数是eval 其调用格式为 eval t 其中t为字符串 它的作用是把字符串的内容作为对应的MATLAB语句来执行 如 eval magic 5 2 6结构数据和单元数据2 6 1结构数据 structurearray 1 结构矩阵的建立与引用结构矩阵的元素可以是不同的数据类型 它能将一组具有不同属性的数据纳入到一个统一的变量名下进行管理 建立一个结构矩阵可采用给结构成员赋值的办法 具体格式为 结构矩阵名 成员名 表达式其中表达式应理解为矩阵表达式 2 结构成员的修改可以根据需要增加或删除结构的成员 例如要给结构矩阵a增加一个成员x4 可给a中任意一个元素增加成员x4 a 1 x4 410075 但其他成员均为空矩阵 可以使用赋值语句给它赋确定的值 要删除结构的成员 则可以使用rmfield函数来完成 例如 删除成员x4 a rmfield a x4 3 关于结构的函数除了一般的结构数据的操作外 MATLAB还提供了部分函数来进行结构矩阵的操作 例student name 小明 student date 20070901 student age 17 studentstudent1 rmfield student age student1student 2 7 2单元数据 cellarray 单元数组与结构数组类似可以存放不同类型和大小的数据 结构数组必须在其域下存储数据 单元数组则不需要域 1 单元矩阵的建立与引用建立单元矩阵和一般矩阵相似 只是矩阵元素用大括号括起来 可以用带有大括号下标的形式引用单元矩阵元素 例如b 3 3 单元矩阵的元素可以是结构或单元矩阵 可以使用celldisp函数来显示整个单元矩阵 如celldisp b 还可以删除单元矩阵中的某个元素 2 关于单元的函数MATLAB还提供了部分函数用于单元的操作 例 c text 1 10 c 1 c 2 disp c celldisp c cellplot c c 1 c 1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!