MATLAB矩阵及运算南京信息工程大学MATLAB分解.ppt_第1页
MATLAB矩阵及运算南京信息工程大学MATLAB分解.ppt_第2页
MATLAB矩阵及运算南京信息工程大学MATLAB分解.ppt_第3页
MATLAB矩阵及运算南京信息工程大学MATLAB分解.ppt_第4页
MATLAB矩阵及运算南京信息工程大学MATLAB分解.ppt_第5页
免费预览已结束,剩余91页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第2章 MATLAB矩阵及其运算,2,本章学习内容,变量和数据操作 矩阵的建立、拆分及特殊矩阵 算术运算、关系运算、逻辑运算 矩阵分析 字符串 结构数据和单元数据 稀疏矩阵,3,本章学习目标,掌握变量的使用和管理方法,了解数据类型 掌握矩阵的建立和拆分,了解常用特殊矩阵 掌握算术运算、关系运算、逻辑运算 掌握常用的矩阵分析操作 掌握matlab中字符串的使用方法 了解结构数据和单元数据 了解稀疏矩阵及用法,4,变量与赋值 预定义变量 内存变量的管理 MATLAB常用数学函数 数据的输出格式,1. 变量和数据操作,next part,go,go,go,go,go,5,变量与赋值,return

2、,(1) 实例 (2) MATLAB中的变量 (3) 赋值的两种格式,view,view,view,6,(1) 实例,return,例2-1 表达式求值。(P15),x = 1+2i; y = 3-sqrt(17); z = (cos(abs(x+y)-sin(78*pi/180)/(x+abs(y),7,(2) MATLAB中的变量,return, MABLAB中标识符(变量名、函数名)的命名规则: 几点说明:,(a) 字母、数字、下划线组成,以字母开头 (b) 区分大小写,(a) 变量包括: 用户自定义变量和系统预定义变量 (b) MATLAB中变量直接使用。不需要预先说明,也不需要指定类

3、型。系统根据其值和操作自动确定。 (c) 系统提供的标准函数名及命令名必须使用小写字母!,8,(3) 赋值的两种格式,return, 变量 = 表达式 表达式 (此时,系统使用预定义变量ans保存中间结果),9,预定义变量,return,表2-1 常用的预定义变量 (P15),(使用注意事项见教材P15),10,内存变量的管理,return,(1) 通过workspace窗口查看、修改、导出、导入 (2) 常用命令: clear, who, whos, save, load,(操作演示),11,MATLAB常用数学函数 (详见P17-19),return,实例1: 求余,实例2: 取整,12,

4、数据的输出格式,return,(1) 默认情况下,MATLAB用十进制数表示一个常数。具体可采用日常记数法和科学记数法两种表示方法。 (2) 在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。 (3) 可以用format命令设置数据输出格式。 format 格式符 (格式符详见教材P19),(操作演示),13,矩阵的建立 矩阵的拆分 特殊矩阵,2. MATLAB矩阵,next part,go,go,go,14,return,矩阵的建立,(1) 在命令窗口直接输入建立 (2) 利用冒号表达式建立向量 (3) 通过矩阵拼接建立更大的矩阵,example,example,ex

5、ample,(1) 在命令窗口直接输入建立,return, a = 1, 2, 3; 4, 5, 6 a = 1 2 3 4 5 6, a = 1 2 3; 4 5 6 a = 1 2 3 4 5 6, a=1,2,3;. 4,5,6 a = 1 2 3 4 5 6,写法1:,写法2:,写法3:,(2) 利用冒号表达式建立向量,return, a=1:5 a = 1 2 3 4 5, a=1:2:10 a = 1 3 5 7 9, b=1:2:10;2:2:10 b = 1 3 5 7 9 2 4 6 8 10,(3) 通过矩阵拼接建立更大的矩阵,return, a1=1 2;3 4 a1 =

6、 1 2 3 4 a = a1,a1;a1,a1 a = 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4,18,return,矩阵的拆分,(1) 矩阵元素的引用 (2) 利用冒号表达式获得子矩阵 (3) 利用空矩阵删除矩阵的元素 (4) 改变矩阵形状,example,example,example,example, a=1:3;4:6 a = 1 2 3 4 5 6,next,(1) 矩阵元素的引用,注: MATLAB中,矩阵元素按列存储!,return, a = 1:3;4:6 a = 1 2 3 4 5 6 i,j = ind2sub(size(a),3) i = 1 j

7、= 2 x = sub2ind(size(a),1,2) x = 3,说明: 函数ind2sub()和sub2ind()可实现矩阵元素索引和下标的转换!,return,(2) 利用冒号表达式获得子矩阵,a = 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4, c=a(:,1) c = 1 3 1 3, d = a(1:3,2:3) d = 2 1 4 3 2 1, b=a(1,:) b = 1 2 1 2,return,(3) 利用空矩阵删除矩阵的元素, a(:,4)= a = 1 2 1 3 4 3 1 2 1 3 4 3,a = 1 2 1 2 3 4 3 4 1 2 1

8、2 3 4 3 4,return,(4) 改变矩阵形状, a=1:4 a = 1 2 3 4 reshape(a,2,2) ans = 1 3 2 4,注意: MATLAB中,矩阵元素按列存储! reshape()只改变逻辑结构,不改变存储结构!,24,return,特殊矩阵,(1) 通用的特殊矩阵 (2) 用于专门学科的特殊矩阵 (3) 特殊矩阵的应用举例,view,view,view,(1) 通用的特殊矩阵,return, zeros()生成零矩阵 (元素全为0) ones()生成幺矩阵 (元素全为1) eye()生成单位矩阵 (主对角线全为1) rand()生成随机矩阵 (元素在01间均

9、匀分布) randn()生成随机矩阵 (元素值呈标准正太分布, 均值为0,方差为1),用法: 实例演示,return, rand() ans = 0.8029 rand(2) ans = 0.9154 0.0738 0.6779 0.8543 rand(2,3) ans = 0.7162 0.1391 0.7726 0.8644 0.6068 0.2315 A = 1 3 5 ; rand(size(A) ans = 0.9450 0.6888 0.7435,(2) 用于专门学科的特殊矩阵,return, magic()生成魔方矩阵 vander()生成范德蒙矩阵 hilb(), invhil

10、b()生成希尔伯特矩阵及其逆矩阵 toeplitz()生成托普利兹矩阵 compan()生成伴随矩阵 pascal()生成帕斯卡矩阵,用法: 实例演示, pascal(6) ans = 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252,return,return,(3) 特殊矩阵应用举例 (教材P26-27),(1) 例2-4 建立随机矩阵: 在区间20,50内均匀分布的5阶随机矩阵。 均值为0.6、方差为0.1的5阶正态分布随机矩阵。 (2) 例2-5 将1011

11、25等25个数填入一个5行5列的表格中,使其每行每 列及对角线的和均为565。 (3) 补充实例: 用matlab编程实现杨辉三角形,M=100+magic(5),view,1 11 121 1331 14641,1 11 121 1331 14641,return,31,3. MATLAB运算,算术运算 关系运算 逻辑运算 关系运算与逻辑运算函数,next part,go,go,go,应用实例1,go,应用实例2,32,算术运算,return,(1) 基本算术运算: + - * / (2) 点运算: .* ./ . .,example,注意: 对运算分量的要求 (如: 矩阵的维数、奇异性、方

12、阵与否) 运算规则 (如: 点运算是矩阵的对应元素进行运算), x=1 2 3;4 5 6 x = 1 2 3 4 5 6 y=1 2;3 4;5 6 y = 1 2 3 4 5 6 z=x*y z = 22 28 49 64,next, a=1 2 3;4 2 6;7 4 9 a = 1 2 3 4 2 6 7 4 9 b=4 3 2;7 5 1;12 7 92 b = 4 3 2 7 5 1 12 7 92 c1 = ab c1 = 0.5000 -0.5000 44.5000 1.0000 0.0000 46.0000 0.5000 1.1667 -44.8333 c2 = b/a c2

13、 = -0.1667 -3.3333 2.5000 -0.8333 -7.6667 5.5000 12.8333 63.6667 -36.5000, 43 ans = 0.7500 3/4 ans = 0.7500,next,对于矩阵,一般AB与B/A 结果不同!, x=1 4 9;1 4 1;9 4 1 x = 1 4 9 1 4 1 9 4 1 y = x0.5 y = 1.5560 + 1.4142i 0.7950 - 0.0000i 1.5560 - 1.4142i 0.1988 - 0.0000i 1.9194 + 0.0000i 0.1988 + 0.0000i 1.5560 -

14、1.4142i 0.7950 + 0.0000i 1.5560 + 1.4142i z = x.0.5 z = 1 2 3 1 2 1 3 2 1,return,36,关系运算,return, = = =, x = 1 3 4; x=3 ans= 0 1 1 x=1 ans= 1 0 0, x = 1 3 4; y = 2 1 5; x=y ans= 0 1 0,37,逻辑运算,return, y = 0 2 1; x % 未选修学号 for i=1:5 no(i)=unidrnd(65); while any( no(i) = notselected ) no(i) = unidrnd(65

15、); end end,return,从学号165中任意抽取5个,不能是未选修的学号,41,对角阵与三角阵 矩阵的转置与旋转 矩阵的逆与伪逆 方阵的行列式 矩阵的秩与迹 向量和矩阵的范数 矩阵的条件数 矩阵的特征值与特征向量,4. 矩阵分析,next part,go,go,42,对角阵与三角阵,return,(1) 对角阵 (2) 三角阵,view,view,应用实例: 杨辉三角形,43,(1) 对角阵,return,只有对角线上有非0元素的矩阵。 对角线上全为1的对角阵称为单位矩阵。, 提取矩阵的对角线元素 diag(A,k) 构造对角矩阵 diag(V,k),example,example,

16、return, A = magic(3) A = 8 1 6 3 5 7 4 9 2, k0 = diag(A) k0 = 8 5 2, k1 = diag(A,1) k1 = 1 7, k2 = diag(A,-1) k2 = 3 9,return, A = diag(1 2 1) A = 1 0 0 0 2 0 0 0 1 B = diag(1:3,-1) B = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0,46,(2) 三角阵,return, 上三角矩阵: 矩阵对角线以下的元素全为0 下三角矩阵: 矩阵对角线以上的元素全为0, 提取上三角矩阵 triu(A,k) 提取

17、下三角矩阵 tril(A,k),example,return, A = magic(3) A = 8 1 6 3 5 7 4 9 2, B = triu(A) B = 8 1 6 0 5 7 0 0 2, B = triu(A,1) B = 0 1 6 0 0 7 0 0 0,return,1 11 121 1331 14641,杨辉三角形,49,矩阵的转置与旋转,return,(1) 转置 (2) 以90为单位逆时针旋转 (3) 左右翻转 (4) 上下翻转,example,应用实例: 图片旋转,return, Y4 = flipud(X) Y4 = 4 9 2 3 5 7 8 1 6, X

18、= magic(3) X = 8 1 6 3 5 7 4 9 2, Y1 = X Y1 = 8 3 4 1 5 9 6 7 2,Y2 = rot90(X,1) Y2 = 6 7 2 1 5 9 8 3 4,Y3 = fliplr(X) Y3 = 6 1 8 7 5 3 2 9 4,return,A = imread(1.jpg); figure(1); imshow(A); % 在图形窗口中显示图像A pause B = rgb2gray(A); % 把rgb图像转换成灰度图像 figure(2); imshow(B); % 在新图形窗口显示图像B pause C = rot90(B); %

19、把图像B逆时针旋转90 figure(3); imshow(C); % 在新图形窗口显示图像C,图片旋转,52,matlab中字符串的表示 字符串的操作,5. 字符串,next part,go,go,53,matlab中字符串的表示,return,(1) 一维的情形 (2) 二维的情形 (3) 注意事项,view,view,view, str1=Summer is gone. str1 = Summer is gone. whos str1 Name Size Bytes Class str1 1x15 30 char array Grand total is 15 elements usin

20、g 30 bytes, str2=Summer is gone.,Autumn is coming. str2 = Summer is gone.Autumn is coming. whos str2 Name Size Bytes Class str2 1x32 64 char array Grand total is 32 elements using 64 bytes,return,(1) 一维的情形,next, str=Summer is gone. ;Autumn is coming. str = Summer is gone. Autumn is coming. whos str

21、Name Size Bytes Class str 2x17 68 char array Grand total is 34 elements using 68 bytes,注: 采用此种写法时,要求各行字符数相等!,(2) 二维的情形, str=char(Summer is gone,Autumn is coming.) str = Summer is gone Autumn is coming. whos str Name Size Bytes Class str 2x17 68 char array Grand total is 34 elements using 68 bytes,通过

22、char()函数可自动实现添加空格,使串长度相同。,return,(3) 注意事项,return, disp(Oh,my God!) Oh,my God! disp(Whats wrong with you?) Whats wrong with you?,58,字符串的操作,return,(1) 字符串元素的访问 (2) 字符串的基本变换 (3) 常用的字符串处理函数,go,go,go,next,(1) 字符串元素的访问, str1=Summer is gone. str1 = Summer is gone. str1(1) ans = S str1(1:6) ans = Summer,ret

23、urn, str=char(Summer is gone,Autumn is coming.) str = Summer is gone Autumn is coming. str(1,:) ans = Summer is gone str(2,1:6) ans = Autumn,return,(2) 字符串的基本变换, str1=abcd str1 = abcd str2=abs(str1) str2 = 97 98 99 100 str3=char(str2) str3 = abcd, str1=1234 str1 = 1234 str2=abs(str1) str2 = 49 50 51

24、 52 str3=char(str2) str3 = 1234,将字符串转化为对应数值,将对应数值转化为字符串,return,(3) 常用的字符串处理函数 (参见教材P45表2-5),example, stuno1 = strcat(201013450,59) stuno1 = 20101345059 stuno2 = strcat(201013450,66) stuno2 = 20101345066 list = strvcat(stuno1,stuno2) list = 20101345059 20101345066,实例: 字符串水平连接和垂直连接,next, no=59 no = 59

25、 nostr = num2str(no) nostr = 59 stuno1 = strcat(201013450,nostr) stuno1 = 20101345059,next, str1 = i like light music. str1 = i like light music. strfind(str1,i) ans = 1 4 9 17 str2 = strrep(str1,i,I) str2 = I lIke lIght musIc. str3 = strrep(str1,i ,I ) str3 = I like light music.,实例: 字符串查找和替换,next,r

26、eturn, disp(hi) hi m = disp(hi) m = disp(hi) eval(m) hi,实例: 把字符串当成matlab语句执行,67,6. 结构数据和单元数据,结构数据 单元数据(元胞数据),next part,go,go,68,(1) 结构数据的创建 结构变量的创建 结构变量构成的向量的创建 (2) 结构数据的基本操作 访问结构中的成员 在结构中添加/删除成员 获取/设置结构成员的信息,结构数据,return,go,go,go,go,go,next, 结构变量的创建,方法一: 直接指定结构的成员名称及值, student.no=20101345090; studen

27、=张宇轩; student.sex=男; student.grade=92 88 90;, student student = no: 20101345090 name: 张宇轩 sex: 男 grade: 92 88 90,return,方法二: 使用struct()函数, student2=struct(no,20101345090,name,张宇轩,. sex,男,grade,92 88 90) student2 = no: 20101359090 name: 张宇轩 sex: 男 grade: 92 88 90, 结构变量的创建, 结构变量构成的向量的创建,next,方法一

28、: 直接指定结构的成员名称及值, student(1).no=20101345090; student(1).name=张宇轩; student(1).sex=男; student(1).grade=92 88 90; student(2) .no=20101345096; student(2).name=李静; student(2).sex=女; student(2).grade=90 82 96;, student student = 1x2 struct array with fields: no name sex grade,return,方法二: 使用struct()函数, 结构变量

29、构成的向量的创建, STUDENT = struct(no,20101345090,20101345096,. name,张宇轩,李静,. sex,男,女,. grade,92 88 90,90 82 96);,return, 访问结构中的成员, student(1).name ans = 张宇轩 student(1).grade(2) ans = 88,return, 在结构中添加/删除成员, student(1).interests=football student = 1x2 struct array with fields: no name sex grade interests, s

30、tudent = rmfield(student,interests), 获取/设置结构成员的信息, fields = fieldnames(student) fields = no name sex grade,获取结构中成员名称,next, score=getfield(student(1),grade) score = 92 88 90,获取结构中某成员的值,return, 获取/设置结构成员的信息, setfield(student(1),no,20101345091) ans = no: 20101345091 name: 张宇轩 sex: 男 grade: 92 88 90,设置结

31、构中某成员的值,77,(1) 基本概念: 单元矩阵 (2) 单元矩阵的建立 (3) 常用的处理函数,单元数据(元胞数据),return,go,go,go,应用举例,(1) 基本概念: 单元矩阵,return,一种特殊的矩阵,其元素是特定的单元,这些单元可以包含其它的MATLAB矩阵。,(2) 单元矩阵的建立, 直接建立 使用cell函数,go,go,return, 直接建立,方法1: 使用直接建立单元矩阵, a = 110;119;120,95599;, a = 3x3 char 95599 cellplot(a) a1,2 ans = 95599,next, 直接建立,方法2: 使用 和下标

32、直接指定每个单元内容, a1,1 = 110;119;120; a1,2 = 95599; a2,1 = ; a2,2 = ; cellplot(a),next, a(1,1) = 110;119;120; a(1,2) = 95599; a(2,1:2) = ,; cellplot(a), 直接建立,方法3: 使用() 、下标和直接指定每个单元内容,return, 使用cell函数, a = cell(2,2) a = a1,1 = 110;119;120; a1,2 = 95599; cellplot(a),为单元矩阵预先分配空间,return,(3) 常用的处理函数,return,example,a = 110;119;120,95599;,; celldisp(a); cellplot(a);,next,return,clear s s.category = tree; s.height = 37.4; = birch; c = struct2cell(s); f = fieldnames(s);,% 创建结构变量,包含三个成员: category, height, name,% 把结构矩阵转换成单元矩阵,clear clc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论