Matlab使用单元数组和结构数组 (2)

上传人:公**** 文档编号:512116206 上传时间:2022-11-06 格式:DOC 页数:9 大小:55.50KB
返回 下载 相关 举报
Matlab使用单元数组和结构数组 (2)_第1页
第1页 / 共9页
Matlab使用单元数组和结构数组 (2)_第2页
第2页 / 共9页
Matlab使用单元数组和结构数组 (2)_第3页
第3页 / 共9页
Matlab使用单元数组和结构数组 (2)_第4页
第4页 / 共9页
Matlab使用单元数组和结构数组 (2)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Matlab使用单元数组和结构数组 (2)》由会员分享,可在线阅读,更多相关《Matlab使用单元数组和结构数组 (2)(9页珍藏版)》请在金锄头文库上搜索。

1、Matlab使用单元数组(cell array)和结构数组 (struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。一. 单元数组 单元数组中的每一个元素称为单元(cell). 单元可以包含任何类型的matlab数据, 这些数据类型包括数值数组, 字符, 符号对象, 甚至其他的单元数组和结构体. 不同的单元可以包含不同的数据. 1.1单元数组创建与显示:1、直接赋值法:按单元索引法 和按内容索引法。(其实也就是将花括号放在等式的右边或是左边的区别)。注

2、意:“按单元索引法”和“按内容索引法”是完全等效的,可以互换使用。通过下面实例,我们看到:花括号用于访问单元的值,而括号()用于标识单元(即:不用于访问单元的值)。具体理解和()区别可以在下面代码最后分别输入A2,2和A(2,2)。就会发现“按内容索引法”能显示完整的单元内容,而“按单元索引法()”有时无法显示完整的单元内容。 A(1,1)=1 2 3; 4 5 6;7 8 9; % 按单元索引法 A(1,2)=2+3i; A(2,1)=A character; A(2,2)=12:-2:0; A %要想详细显示A中的内容,可用指令:celldisp(A)A = 3x3 double 2.00

3、00 + 3.0000i A character 1x7 double B1,1=1 2 3;4 5 6;7 8 9; % 按内容索引法。 B1,2=2+3i; B2,1=A character; B2,2=12:-2:0;BB = 3x3 double 2.0000 + 3.0000i A character 1x7 double2、利用cell函数法:即首先用cell函数生成一个空的单元数组,然后再向其中添加所需的数据。下面的代码生成一个2X3的空单元数组: C=cell(2,3)C = 利用cell生成空单元数组后,可以采用“按单元索引法”和“按内容索引法”对其进行赋值。在赋值时,用户一

4、定要注意和()的用法。 C(1,1)=This does workC = This does work C2,3=This workC = This does work This work(1)利用cell指令创建单元数组C=cell(2);%预设空单元数组 C(:,1)=char(Another,text string);10:-1:1 %对第一列单元赋值 C = 2x11 char 1x10 double (2)单元数组的“列”扩充和“行”扩充AC=A C%空格(或逗号)利用来分隔列 A_C=A;C%分号利用来分隔“行” AC = 2x10 char 3x3 double 2x11 cha

5、r 1.0000+ 2.0000i 1x1 sym 1x10 double A_C = 2x10 char 3x3 double 1.0000+ 2.0000i 1x1 sym 2x11 char 1x10 double 【例】cellplot能用图形形象化地表示单元数组的内容。(A_C取自上例)cellplot(A_C,legend) 单元数组的收缩A_C(3,:)=%删除第3行,使A_C成为的单元数组 A_C = 2x10 char 3x3 double 1.0000+ 2.0000i 1x1 sym 1x10 double 把A_C重组成单元数组R_A_CR_A_C=reshape(A_

6、C,2,3) R_A_C = 2x10 char 1x10 double 1x1 sym1.0000+ 2.0000i 3x3 double 1.2 单元数组内容的调取取一个单元f1=R_A_C(1,3)%使用园括号寻访得到的是单元,而不仅是内容。 class(f1) f1 = 1x1 symans =cell 取一个单元的内容f2=R_A_C1,3%用花括号寻访取得内容 class(f2) f2 =sin(-3*t)*exp(-t)ans =sym 取单元内的子数组f3=R_A_C1,1(:,1 2 5 6)%注意三种括号的不同用途%取第1行第1列单元内容中的第1、2、5、6列。 f3 =这

7、是 单元创建 同时调取多个单元内容f4,f5,f6=deal(R_A_C1,3,4)%取三个单元内容,赋值给三个变量 f4 =这是 单元数组创建算例 1f5 = 10 9 8 7 6 5 4 3 2 1f6 = 1 4 7 2 5 8 3 6 9 二. 结构数组 2.1. 结构数组的创建 Matlab提供了两种定义结构的方式:直接引用和使用struct函数。1. 使用直接引用方式定义结构 与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:x.real = 0; % 创建字段(field)名为real,并为该字段赋值为0x.ima

8、g = 0 % 为x创建一个新的字段imag,并为该字段赋值为0x =real: 0imag: 0然后可以将其动态扩充为数组:x(2).real = 0; % 将x扩充为12的结构数组x(2).imag = 0;在任何需要的时候,也可以为数组动态扩充字段,如增加字段scale:x(1).scale = 0;这样,所有x都增加了一个scale字段,而x(1)之外的其他变量的scale字段为空:x(1) % 查看结构数组的第一个元素的各个字段的内容ans =real: 0imag: 0scale: 0x(2) % 查看结构数组的第二个元素的各个字段的内容,注意没有赋值的字段为空ans =real:

9、 0imag: 0scale: 应该注意的是,x的real、imag、scale字段不一定是单个数据元素,它们可以是任意数据类型,可以是向量、数组、矩阵甚至是其他结构变量或单元数组,而且不同字段之间其数据类型不需要相同。例如:clear x; x.real = 1 2 3 4 5; x.imag = ones(10,10); 数组中不同元素的同一字段的数据类型也不要求一样:x(2).real = abc;x(2).imag = rand(5,1); 甚至还可以通过引用数组字段来定义结构数据类型的某字段:x(3).real = x(1); x(3).imag = 3; x(3)ans =real

10、: 1x1 structimag: 3下面看一个实际的例子来熟悉直接引用方式定义与显示结构。【例】 温室数据(包括温室名、容量、温度、湿度等)的创建与显示。(1) 直接对字段赋值法产生结构变量green_house.name = 一号温室; % 创建温室名字段green_house.volume = 2000立方米; % 创建温室容量字段green_house.parameter.temperature = 31.2 30.4 31.6 28.7 29.7 31.1 30.9 29.6; % 创建温室温度字段green_house.parameter.humidity = 62.1 59.5

11、57.7 61.5 62.0 61.9 59.2 57.5; % 创建温室湿度字段(2)显示结构变量的内容green_house % 显示结构变量结构green_house =name: 一号温室volume: 2000立方米parameter: 1x1 structgreen_house.parameter % 用字段作用符号. 显示指定字段(parameter)中内容ans =temperature: 2x4 doublehumidity: 2x4 doublegreen_house.parameter.temperature % 显示temperature字段中的内容ans =31.20

12、00 30.4000 31.6000 28.700029.7000 31.1000 30.9000 29.6000【例】在上例的基础上,创建结构数组用以保存一个温室群的数据。green_house(2,3).name = 六号温室; %产生23结构数组green_house % 显示结构数组的结构green_house =2x3 struct array with fields:namevolumeparametergreen_house(2,3) % 显示结构数组元素的结构ans =name: 六号温室volume: parameter: 2. 使用struct函数创建结构使用struct函数也可以创建结构,该函数产生或把其他形式的数据转换为结构数组。struct的使用格式为:s = sturct(field1,values1,field2,values2,); 该函数将生成一个具有指定字段名和相应数据的结构数组,其包含的数据v

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号