ch3Matlab数据结构.ppt
《ch3Matlab数据结构.ppt》由会员分享,可在线阅读,更多相关《ch3Matlab数据结构.ppt(48页珍藏版)》请在三一办公上搜索。
1、Matlab 数据结构,安徽工业大学数理学院侯为根,Matlab 数据结构,1)矩阵数组,3)字符与字符串数组,4)结构数组,5)元胞(异质)数组,2)多维数组,在 MATLAB 的数据型态中,向量可视为一维数组,矩阵可视二维数组,对于维数(Dimensions)超过 1 的数组则均可视为”多维数组”(Multidimesional Arrays,简称 M-D Arrays)。,1 多维数组的定义,多维数组,二维数组又简称矩阵,具有两个维数(Dimensions)行(Row)列(Column),列,行,二维数组(I),二维数组,可对应至一个 X-Y 二维平面坐标,图示如右:,将两个二维数组迭在
2、一起,就形成第三个维度,此第三个维度称为”页”(Page),图示如下,页,列,页,行,三维数组(I),三维数组,可对应至一个 X-Y-Z 三维立体坐标,图示如右:,三维数组寻址,可以(行,列,页)定之。以维度为 342 的三维数组为例,其寻址方式可图示如下:,数组 A 是三维数组,其中 A(:,:,1)代表第一页的二维数组,A(:,:,2)代表第二页的二维数组。,三维数组,A(:,:,1),A(:,:,2),A(3,1,1),A(2,4,2),四维数组的第四个维度可视为”箱”(Box),而每个箱是由一个三维数组所组成,其寻址方式为(行,列,页,箱)。,可类推至 n 维数组,n 为任意自然数。,
3、四维数组,一个 2235 的四维数组,可表示成 5 个箱,每个箱都由一个 223 的三维数组所组成,图标如下:,A=1 0 2 5;4 1 8 7;3 2 6 3;A(:,:,2)=3 5 4 1;2 6 2 1;4 2 3 0A(:,:,1)A(:,:,2),2 多维数组的建立,例1,建立一个简单的多维数组,可直接由 MATLAB 指令窗口内输入,上例是先建立一个二维数组A,再输入第二页的二维数组A(:,:,2),逐页输入二维数组的内容,即可建立三维数组。如果直接设定某一个新页的一个元素值,此时MATLAB会将此页其它未指定之元素直接设定为0,范例如下:,A=1 0 2 5;4 1 8 7;
4、3 2 6 3;A(:,:,2)=3 5 4 1;2 6 2 1;4 2 3 0;A(2,1,3)=5,若要将数组 A 的第二页所有元素设为 7,可输入:A(:,:,2)=7,多维数组直接设定,例2:,A(:,:,1)A(:,:,2)A(:,:,3),对于较复杂的多维数组,可用 cat 指令来建立,其功能为”并排”数个数组,并可指定”并排”时所用的维度其指令格式如下:Z=cat(dim,A,B,C)A、B、C 为数组dim 是将 A、B、C 合并时所用到的维度。欲将矩阵 A 与 B 上下(垂直)并排,垂直并排多维数组,A=1 2;3 4;B=1 0;0 1;Z=cat(1,A,B)A;B,数字
5、1表示将数组A与 B上下垂直并排,例3:,欲将数组 A 与 B 左右(水平)并排例4:,A=1 2;3 4;B=1 0;0 1;Z=cat(2,A,B),水平并排多维数组,数字 2 表示将数组 A 与 B 左右水平并排,将数组 A 与 B 迭起来,得到一个三维数组 例5:,A=1 2;3 4;B=1 0;0 1;Z=cat(3,A,B),数组堆栈,数字3表示将数组 A 与 B 重迭排成三维数组,所设定的 dim 值比数组 A、B、C的各自原先的“维度数”(Dimensionality)还要超出 2 或更多,MATLAB 会自动补上大小为 1 的维度此时数组 Z 的维度变为 2212 例6,A=
6、1 2;3 4;B=1 0;0 1;Z=cat(4,A,B),Z(:,:,1,1),Z(:,:,1,2),cat自动补齐维数,数字 4 表示将数组 A 与 B 放在相邻的两“箱”,可用squeeze命令压缩孤维,S=squeeze(z),例7,MATLAB 可产生特殊用途的多维数组 要产生一个维度是 235 的随机数数组,可用 rand 指令,A=rand(2,3,5)A(:,:,1)A(:,:,2)A(:,:,3)A(:,:,4)A(:,:,5),随机数数组,许多用于向量和矩阵的数学运算,例如 sum、max、min、mean 等,也都可以用在多维数组。在使用这些指令时,我们必须指定这些指令
7、的操作是在哪一个维度。,维度指定,范例7 A=1 1 1 1;2 2 2 2;3 3 3 3;B=0 0 0 0;1 1 1 1;1 2 3 4;Z=cat(3,A,B);,%将矩阵 A,B 迭成一个三维数组,3 多维数组的数学运算,S=sum(Z,1)%根据第一维度来对元素进行相加size(S)S2=sum(Z,2)%根据第二维度来对元素进行相加 S3=sum(Z,3)%根据第三维度来对元素进行相加,3 多维数组的数学运算,上述例中,矩阵 Z 的大小是 342,sum(Z,1)是根据第一个维度来进行相加,因此第一个维度值就会被被压成是 1,因此 size(S)所传回的值是 1,4,2,代表矩
8、阵 S 的大小是 142sum(Z)的预设相加维度即是 1,因此 sum(Z)和 sum(Z,1)所得到的结果是一样的。,对第二个维度进行相加,可见下列范例,A=1 1 1 1;2 2 2 2;3 3 3 3;B=0 0 0 0;1 1 1 1;1 2 3 4;Z=cat(3,A,B);%将矩阵 A,B 迭成一个三维数组 S=sum(Z,2)%根据第二维度来对元素进行相加,例8,在上述范例中,sum(Z,2)是对第二个维度进行相加运算,因此所传回的矩阵 S 的维度是 312。,如果所要相加的维度只有单一维度,那么 sum 指令会对下一个维度进行相加的动作,sum(sum(Z)将会得到三维数组
9、Z 的每一页的总和,sum的累加,例9A=1 1 1 1;2 2 2 2;3 3 3 3;B=0 0 0 0;1 1 1 1;1 2 3 4;Z=cat(3,A,B);%将矩阵 A,B 迭成一个三维数组S=sum(sum(Z),与 sum 类似的指令还有 max、min、mean、median、mode、std、diff、sort 等,MATLAB 在第五版之后才支持的数据型态,将不同的数据型态储存于同一个数组之中,异质数组(Cell Arrays),主要功能,1、建立异质数组;2、显示异质数组;3、取用异质数组.,本节重点,异质数组(Cell Arrays)可储存各种不同型态的 MATLAB
10、 数据Cell Arrays=“盒子数组”!?“异质”=“不同性质的数据型态”,建立异质数组-Cell Indexing,clear A(1,1)=This is the first cell.;A(1,2)=5+j*6,4+j*5;A(2,1)=1 2 3;4 5 6;7 8 9;A(2,2)=Tim;Chris,Ex:cell01.M,上例建立了一个二维异质数组A:2*2内容如下:,建立异质数组-Content Indexing,做法:矩阵()异质数组,Ex:cell02.m,A1,1=this is the first cell.;A1,2=5+j*6,4+j*5;A2,1=1 2 3;
11、4 5 6;7 8 9;A2,2=Tim;Chris,结果同上例,建立异质数组 使用大括号,B=James Bond,1 2;3 4;5 6;pi,magic(5)C=rand(3),ones(2);zeros(5),randperm(4),第三种方法是直接用大括号一次把所有元素括起来,Ex:,对于异质数组的合并,大致上跟数组合并相同Ex:(B,C如上)M=B C%将异质数组 B 及 C 左右并排,异值数组的合并,若在 MATLAB 指令窗口内,直接呼叫异质数组的名称,MATLAB 并不直接显示异质数组各元素的值,,异质数组的内容显示,直接呼叫?=maybe not,Ex:A,只能显示各元素的
12、数据型态及维度,A=1x23 char 1x2 double 3x3 double 2x1 cell,A1,1=this is the first cell.;A1,2=5+j*6,4+j*5;A2,1=1 2 3;4 5 6;7 8 9;A2,2=Tim;Chris;cellplot(A)%以图形的方式显示异质数组 A 的内部数据型态,Cellplot图标型态,cellplot 指令可将异质数组的内部数据型态,以图形的方式显示,Ex:cell03.m,celldisp(A)%显示异质数组 A 各个构成元素的实际内容,celldisp显示,Ex:,前提过建立异质数组的方法Content Ind
13、exing,其实也可以用来直接将异质数组 A 的各个构成元素内容一次全部显示出来,Content Indexing显示,用法:要查看A的内容,在MATLAB下直接输入:,A:%显示异质数组 A 的全部构成元素,1、直接取用异质数组的cell;2、取用异值数组的元素的内部构成单位;3、一次同时取用或删除多个元素;4、异质数组可以取代以逗点分开的变量列。,异质数组的内容取用,以下例子先建立一个异质数组 B,再取用其中第 1行、第 2 列的元素:,直接取用异质数组的cell,B=James Bond,1 2;3 4;5 6;pi,magic(5),F=B1,2%取用异质数组 B 的第 1行、第 2列
14、的元素,直接取用异质数组的cell(cont),先用 Content Indexing 的方法,再直接加上一般矩阵的索引法,取用异值数组的元素的内部构成单位,例:G=B1,2(3,1),H=B(2,:)%取用异质数组 B 的第二行所有元素 B(1,:)=%删除异质数组 B 的第一行所有元素,同时取用或删除多个元素,如上述异质数组B,同理,亦可将之用于输出变数列:例:clear;F1:2=max(rand(5),取代以逗点分开的变数列,例:%先建立一个维数为 14 的异质数组F=2 3 5,1 2 3,Timmy,Annie F1:2,上例中,F1:2 会指向“2 3 5,1 2 2”可将之用于
15、函数的输入变量列,例如:,plot(F1:2,-o),改变异质数组的大小事先预设(Pre-Allocate)空的异质数组测试某一变量是否为异质数组将一数值数组转换成异质数组将一结构数组的所有字段值转换成异质数组将异值数组转换为结构数组将一结构数组的某一字段值转换成异质数组,其它相关指令,结构数组,每一个结构数组(Structure Array)可以包含很多个元素,每一个元素可以看成是一笔数据。因此每个元素可以包含数个字段(Fields),而每个字段可包含各个不同型态的数据。例如一个包含学生个人数据的结构数组,可能含有的字段是 name(学生姓名)、id(学号)、scores(小考成绩)等。要建
16、立此种结构,可在指令行直接输入个字段的值。,1、结构数组的建立,clear student%清除 student 变数 student.name=洪鹏翔;%加入 name 字段 student.id=mr871912;%加入 id 字段 student.scores=58,75,62;%加入 scores 字段 student%秀出结果,范例1:struct01.m,此时 student 即代表一个结构数组的第一个元素,或是第一笔数据。,clear student%清除 student 变数student.name=洪鹏翔;%加入 name 字段student.id=mr871912;%加入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch3Matlab 数据结构
链接地址:https://www.31ppt.com/p-5574370.html