《第五章几种高级数据结构.ppt》由会员分享,可在线阅读,更多相关《第五章几种高级数据结构.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第五章 几种高级数据结构多维数组异质数组(cell array)结构数组(struct array)一、多维数组一、多维数组1.1.概念概念 MatlabMatlab中中,向量可视为一维数组向量可视为一维数组,矩阵可视为二维数组矩阵可视为二维数组,维数维数22的都称为多维数组的都称为多维数组.对于二维数组对于二维数组,我们可以以其行、列位置寻址每一元素我们可以以其行、列位置寻址每一元素.若有多个二维数组相叠若有多个二维数组相叠,则可形成所谓的三维数组则可形成所谓的三维数组,第第三维称为三维称为“页页”,我们以行、列、页寻址三维数组的元我们以行、列、页寻址三维数组的元素素,可以将二位数组对应至
2、平面可以将二位数组对应至平面x-yx-y二维坐标二维坐标,三维数组三维数组对应至空间对应至空间x-y-zx-y-z三维坐标三维坐标,若再多出第四维若再多出第四维,则称为则称为“箱箱”,由此类推可至由此类推可至n n维维.2.2.建立建立).可以直接输入手工建立可以直接输入手工建立 (举例)(举例)).用用cat命令建立命令建立 其功能为其功能为,按某种特定方式合并数个数组按某种特定方式合并数个数组,格格式为式为:z=cat(dim,A,B,C)其中其中A、B B、C C为已存在的数组为已存在的数组,dimdim代表合并代表合并方式方式.).用用rand,zeros等命令直接产生多维数组等命令直
3、接产生多维数组.(举例)(举例)二二、异质数组、异质数组(Cell Arrays)Cell Arrays)它可以存储不同数据类型的数据它可以存储不同数据类型的数据,其每一其每一元素可作为一个单元或元素可作为一个单元或“抽屉抽屉”以存放以存放各类数据各类数据.1.1.建立建立方法有三种(示范举例)方法有三种(示范举例)a).Cell Indexinga).Cell Indexing b).Content Indexing b).Content Indexing c).c).直接以大括号直接以大括号 将所有内容一次设定将所有内容一次设定完成完成.2.2.内容显示内容显示 异质数组建立后异质数组建立
4、后,输入数组名不能直接显输入数组名不能直接显示其内容示其内容,而是显示其每一单元的数据类而是显示其每一单元的数据类型型.若想显示内容若想显示内容,则应则应:a).a).如如celldisp(Acelldisp(A)命令显示命令显示A A的内容的内容 b).b).如如A A:显示显示3.3.取用取用 a).取用某一元素,可用如F=B1,2的Content Indexing方式;b).若同时取用多个元素,则用H=B(2,:)的Cell Indexing方式.4.其他相关命令其他相关命令预置一个空的数组预置一个空的数组 Cell(m,n)命令命令删除某行或列删除某行或列 命令形式命令形式 如如:B(
5、1,:)=改变结构改变结构 Reshape Reshape()()命令命令数值数组转换为异质数组数值数组转换为异质数组 num2cell num2cell()()命令命令举例举例举例举例三三、结构数组、结构数组(Structure Structure Arrays)Arrays)每个结构中可包含数个字段每个结构中可包含数个字段,而每字段包而每字段包含的数据类型可以彼此不同含的数据类型可以彼此不同.1.1.建立建立a).a).可以在命令行中直接输入各字段可以在命令行中直接输入各字段(示例)(示例)此时此时,studentstudent代表一个结构代表一个结构,我们还可以类我们还可以类似建立其它相
6、同的结构似建立其它相同的结构,可用可用student(2)student(2)表表示示,此时此时studentstudent即为一个即为一个1*21*2的结构数组的结构数组.b).b).使用使用structstruct命令命令,格式为格式为:a=struct(field1,value1,field2,valuea=struct(field1,value1,field2,value2 2)其中其中field1field1为字段名为字段名,value1value1为字为字段包含的数据段包含的数据.举例举例注意注意:同字段多个字段值同时输入时使用同字段多个字段值同时输入时使用异质数组。此时异质数组。
7、此时,MatlabMatlab会将之中每会将之中每个元素分别存入该结构数组对应的个元素分别存入该结构数组对应的字段中字段中.结构数组可嵌套结构数组可嵌套,即其中可包含另一即其中可包含另一个结构数组个结构数组.举例举例2.2.数据的取用数据的取用)若要察看或修改数组的某一字段若要察看或修改数组的某一字段,则可则可直接输入数组名直接输入数组名.字段名字段名(=(=值值)即可即可.使用使用getfieldgetfield()()和和setfieldsetfield()()命令也可。命令也可。)若要一次设定若要一次设定(修改修改)多个字段值可用多个字段值可用dealdeal命令命令.举例举例举例举例3
8、 其他相关命令数据的合并数据的合并)运算可以合并结构数组中相同字段的值运算可以合并结构数组中相同字段的值,其作用其作用为水平并排合并为水平并排合并,因此要求字段值必须行数相同因此要求字段值必须行数相同.)使用使用catcat命令命令,语法为语法为:A=A=cat(dim,struct_fieldcat(dim,struct_field)其中其中dimdim代表合并方代表合并方式式.dim dim为为1:1:上下并排合并上下并排合并 dim dim为为2:2:左右水平合并左右水平合并 举例举例改变结构数组的字段改变结构数组的字段 1)增加新字段:)增加新字段:数组名数组名.字段名值的方式直接添加即可字段名值的方式直接添加即可;2)删除某字段)删除某字段,应用应用rmfield()()命令命令,格式为格式为:new=rmfield(数组名数组名,字段名字段名)举例举例取得字段名:取得字段名:使用fieldnames()可返回结构数组中所有字段的名称,如:Allfieldnames(a)4 异质数组与结构数组的转换异质数组转换为结构数组:(举例)Cell2struct()命令语法:s=cell2struct(values,fields,2)结构数组转换为异质数组:(举例)Struct2cell()命令,将所有字段值转换为异质数组语法:cstruct2cell(结构数组名)