Matlab矩阵和数组的操作.ppt

上传人:sh****n 文档编号:6379225 上传时间:2020-02-24 格式:PPT 页数:57 大小:916.36KB
返回 下载 相关 举报
Matlab矩阵和数组的操作.ppt_第1页
第1页 / 共57页
Matlab矩阵和数组的操作.ppt_第2页
第2页 / 共57页
Matlab矩阵和数组的操作.ppt_第3页
第3页 / 共57页
点击查看更多>>
资源描述
第二讲矩阵和数组的操作 矩阵的建立矩阵的保存和调用矩阵的拆分多维矩阵矩阵的运算字符与字符串 一矩阵的建立 直接输入法利用M文件建立矩阵利用矩阵编辑器MatrixEditor完成输入和修改利用MATLAB函数建立矩阵建立大矩阵 1 直接输入法 将矩阵的元素用方括号括起来 按矩阵行的顺序输入各元素 同一行的各元素之间用空格或逗号分隔 不同行的元素之间用分号分隔 A 163213 510118 96712 415141 A 16321351011896712415141 2 利用文件建立矩阵 对于比较大且比较复杂的矩阵 可以为它专门建立一个M文件 例 利用M文件建立A矩阵 1 启动有关编辑程序或MATLAB文本编辑器 并输入待建矩阵 2 把输入的内容存盘 设文件名为mymatrix m 3 运行该M文件 就会自动建立一个名为A的矩阵 可供以后使用 A 16 03 02 013 05 010 011 08 09 06 07 012 04 015 014 01 0 2 存为 mymatrix m 3 运行 mymatrix 1 MATLAB程序编辑器中输入 一 利用MATLAB程序编辑器 编辑一个文本文件 16 03 02 013 05 010 011 08 09 06 07 012 04 015 014 01 0 2 装入该文本文件 loadmymatrix dat或者 loadmymatrix txt 3 创建一个变量名为mymatrix的矩阵 二 利用其它文本编辑器 文本或二进制格式 将以文本或二进制格式存储的数据读入MATLAB的另一种方式是用ImportWizard File ImportData 3 利用矩阵编辑器ArrayEditor 先在命令窗口输入 A 1在Workspace窗口 双击该变量 打开矩阵编辑器 进行输入和修改 4 利用MATLAB函数建立矩阵 几个产生特殊矩阵的函数 zeros ones eye rand randn 这几个函数的调用格式相似 下面以产生零矩阵的zeros函数为例进行说明 其调用格式是 zeros m 产生m m零矩阵zeros m n 产生m n零矩阵 zeros size A 产生与矩阵A同样大小的零矩阵相关的函数有 length A 给出行数和列数中的较大者 即length A max size A ndims A 给出A的维数 size A 多维矩阵各维长度 Z zeros 2 4 Z 00000000 R randn 4 4 R 1 06680 2944 0 6918 1 44100 0593 1 33620 85800 5711 0 09560 71431 2540 0 3999 0 83231 6236 1 59370 6900 F 5 ones 3 3 F 555555555 N fix 10 rand 1 10 N 4944852680 此外 常用的函数还有reshape A m n 它在矩阵总元素保持不变的前提下 将矩阵A重新排成m n的二维矩阵 其元素是以列的方式从A中获得 A必须包含m n个元素 A 16321351011896712415141 reshape A 2 8 ans 16936271312541015111481 5 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来 例如 A 123 456 789 C A eye size A ones size A A C 123100456010789001111123111456111789 6冒号表达式 冒号表达式的一般格式 e1 e2 e3还可以用linspace函数产生一个线性间隔的行向量 linspace a b n a b n 初值 终值 点数linspace a b n 与a b a n 1 b等价 linspace用于产生一个等差数列 括号里三项分别表示起始值 终止值和元素数目 logspace用于产生一个对数间隔行向量 等比数列 b logspace 0 4 5 表示产生一个起始值为100 终止值为104 元素数目为5的等比数列 X 10 20 X 0 0 1 0 5 X linspace 0 pi 11 或 X linspace 0 1 11 pi X Columns1through700 31420 62830 94251 25661 57081 8850Columns8through112 19912 51332 82743 1416 二矩阵的保存和调用 savemydataAXloadmydata系统自动沿设定好的路径以 mat 格式存储文件savefile mydata mat save savefile A X Load savefile 如果想存储在指定路径 saveD homework mydataAX或者 savefile D homework mydata mat 三矩阵的拆分 MATLAB允许用户对一个矩阵的单个元素进行赋值和操作 例如A 3 2 200也可以采用矩阵元素的序号来引用矩阵元素 矩阵元素按列编号 先第一列 再第二列 依次类推 以m n矩阵A为例 矩阵元素A i j 的序号为 j 1 m i 其相互转换关系也可利用sub2ind和ind2sub函数求得 分别为 把矩阵下标变为元素序号和把元素序号变为矩阵下标 1 矩阵元素 A 172418 222714 461320 A 172418222714461320 ind sub2ind size A 2 2 ind 5 ind sub2ind size A 2 3 ind 8 i j ind2sub size A 5 i 2j 2 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列中的所有元素 2 利用空矩阵删除矩阵的元素 在MATLAB中 定义 为空矩阵 给变量X赋空矩阵的语句为X 注意 X 与clearX不同 clear是将X从工作空间中删除 而空矩阵则存在于工作空间 只是维数为0 将某些元素从矩阵中删除 采用将其置为空矩阵的方法就是一种有效的方法 X 16321351011896712415141 X 2 X 1 2 X 2 2 10 我注 2 2 10为X第2 4 6 8 10个元素 X 16213511897124141 X 1692713121 A 4 6 A A 3 A A 3 A 123456789 B A 1 2 2 3 B 2356 A 2 A 134679 A 2 2 0A 134079 A 3 ans 7 A 2 4 我注2 4为A的第2 3 4个元素ans 473 A 123456789 sum A ans 121518 A ans 147258369 B diag A 提取或建立对角阵B 159 C diag B C 100050009 A 123456789 B A 4B 000011111 r c find A 4 r 32323c 12233 A rand 3 4 A1 A 2 3 1 3 4 A2 A 1 3 2 4 L A 2 0 5A3 A 2 L A 0 05790 00990 19870 19880 35290 13890 60380 01530 81320 20280 27220 7468A1 0 35290 60380 01530 81320 27220 7468A2 0 00990 19880 20280 7468L 1101A3 0 35290 13890 0153 tril A 主对角线及以下元素取矩阵A的元素 其余为0 tril A K 相对第K对角线及以下元素 triu A 主对角线及以上元素取矩阵A的元素 其余为0 triu A K rot90 A 逆时针旋转90度 rot90 A K L flipud A 将矩阵A上下翻转 fliplr A 将矩阵A左右翻转 reshape A m n 3 矩阵的结构变换 Practice A magic 4 B1 rot90 A B2 rot90 A 2 B3 tril A 2 B4 triu A 1 BT A 1 对二维矩阵进行扩充得到三维矩阵 四多维矩阵 以三维矩阵为例 常用的方法有4种 a 1 2 3 4 a 1234 a 2 5 6 7 8 a 1 1234a 2 5678 2 若干个同样大小的二维矩阵进行组合得到三维矩阵 b 1 12 34 b 1234 b 2 56 78 b 1 1234b 2 5678 3 除产生单位矩阵的eye函数外 前面介绍的建立矩阵的函数都可以延伸到三维矩阵 C randn 4 3 2 c 12 c 12 C repmat c 322 C 1 121212121212C 2 121212121212 repmat 复制小矩阵生成多维数组 4 用cat函数构建多维矩阵 cat dim A1 A2 cat函数把大小相同的若干矩阵A1 A2 按照dim指定的维数组合成新的矩阵 A1 12 34 A2 56 78 C1 cat 1 A1 A2 C2 cat 2 A1 A2 C3 cat 3 A1 A2 一 算术运算 二 关系运算 三 逻辑运算 五矩阵的运算 一 算术运算 1 基本算术运算MATLAB的基本算术运算有 加 减 乘 右除 左除 乘方 注意 运算是在矩阵意义下进行的 单个数据的算术运算只是一种特例 2 点运算点运算符有 和 两矩阵进行点运算是指它们的对应元素进行相关运算 要求两矩阵的维数相同 3 MATLAB常用数学函数 1 矩阵加 减 运算 相加 减的两矩阵必须有相同的行和列 两矩阵对应元素相加减 允许参与运算的两矩阵之一是标量 标量与矩阵的所有元素分别进行加减操作 2 矩阵乘 运算 A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘 3 矩阵除 运算矩阵除的运算在线性代数中没有 有矩阵逆的运算 在matlab中有两种矩阵除运算 左除 A B表示A左除B 右除 A B表示B右除A 设A是可逆矩阵的运算 AX B的解是A左除B 即X A B XA B的解是A右除B 即X B A A 12 34 56 B 56 78 910 C A B D A B E B A F B A 对于AX b的线性方程组 有两种解法 一种是利用矩阵求逆 即X inv A b 另一种是用左除 即X A b 除法的速度快 A rand 5 b ones 5 1 x1 inv A b x2 A b 4 矩阵乘方 运算 A p A自乘p次幂设A为方阵 p为正整数 则A p表示A自乘p次 若A为方阵且非奇异 p为正整数 A p 表示A的逆自乘p次 对于p的其它值 计算将涉及特征值和特征向量 如A p都是矩阵 A p则无意义 A 1 2 3 2 3 1 3 2 1 B A 2 C A 0 3 5 矩阵的其它运算 inv 矩阵求逆det 行列式的值eig 矩阵的特征值diag 对角矩阵 矩阵转置sqrt 矩阵开方 Thefirstrowcontainstheheartrate weight andexercisehoursforpatient1 thesecondrowcontainsthedataforpatient2 andsoon Themeanandstandarddeviationofeachcolumn mu mean D sigma std D mu 75 8000161 80003 4800sigma 5 630325 49902 2107 D 721343 2 812013 5 691567 1 821482 4 751701 2 6 点运算 a 123 456 789 b 246 135 7910 a bans 281841530497290 a b对比一下上面两式得到的结果 a b b a 给出a b对应元素间的商 都是a的元素被b的对应元素除 a 123 b 456 c1 a b c2 b ac1 4 00002 50002 0000c2 4 00002 50002 0000 元素对元素的幂 a 123 b 456 z a 2z 1 004 009 00 z a bz 1 0032 00729 00 logm A 求矩阵A的对数sqrtm A 求矩阵A的平方根funm A fun 一般的方阵函数 二 关系运算 MATLAB提供了6种关系运算符 大于 大于或等于 等于 不等于 关系运算符的运算法则 B 1110000110101110110010010 C 1111111111111111111111111 A 0 95010 76210 61540 40570 05790 23110 45650 79190 93550 35290 60680 01850 92180 91690 81320 48600 82140 73820 41030 00990 89130 44470 17630 89360 1389 A rand 5 B A 0 5 C A 0 5 例 产生5阶随机方阵A 其元素为 10 90 区间的随机整数 然后判断A的元素是否能被3整除 1 生成5阶随机方阵AA fix 90 10 1 rand 5 10 2 判断A的元素是否可以被3整除P rem A 3 0 三 逻辑运算 MATLAB提供了4种逻辑运算符 与 或 非 xor 异或 运算法则 a 1 5 b 2 6 c a 2 b 5 x linspace 0 10 100 产生数据y sin x 产生sin函数z y 0 y 将sin x 的负值设为0z z 0 5 y 0 z x 8 z 将大于x 8以后的值设为0plot x z xlabel x ylabel z f x title Adiscontinuoussignal 四 关系和逻辑函数 y all x 当x为数组时 只有x中所有元素都不等于0时 y为1 否则为0 x为矩阵时 则命令只作用于列元素 即对同列元素进行判断 y any x a 1204 2013 b all a c any a b 1001c 1111 exist a 变量或函数是否被定义ans 1 exist e ans 0 isempty a 参数是否为空ans 0 isstr hello 参数是否为一字符串ans 1 isequal a b 判断数组或矩阵是否相等ans 0 y Hello z hello strcmp y z 判断字符串是否相等ans 0 b 456 isprime b 元素是否为素数ans 010 六字符与字符串 字符串是用单撇号括起来的字符序列 例如 NorthenJiaotongUniversity 若字符串中的字符含有单撇号 则该单撇号字符应用两个单撇号来表示 S I mLucy 字符串中每个字符 空格也是字符 对应矩阵的一个元素 size S 字符串是以ASCII码形式存储的 用abs和double命令可以看到字符所对应的ASCII码值 abs S setstr和char命令可以把ASCII码矩阵转换为字符串矩阵 char 72101108108111 setstr 72101108108111 ans Hello ch NorthenJiaotongUniversity e ch 1 5 f ch end 1 1 g upper ch h lower g 001002 003004 ans 001002003004 str2num 001002 003004 ans 1234 str2num num2str 与字符串有关的另一个重要函数是eval 其调用格式为 eval t 其中t为字符串 它的作用是把字符串的内容作为对应的MATLAB语句来执行 例如t pi m t sin t cos t y eval m y 3 14160 0000 1 0000 aa 7867708 43801905500 427 a 2 6 ans 09068 a 2 6 3 4 Indexexceedsmatrixdimensions a 2 3 3 4 ans 43801550 aa 7867708 43801905500 427 a 24 ans 08 438010 427 a 2 4 ans 08 43801905500 427 a 2 4 ans 08 43801905500 427 a 136811 ans 7898 455 aa 7867708 43801905500 427
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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