Matlab学习心得系列-005.结构数组

上传人:zhu****ng 文档编号:144914556 上传时间:2022-08-28 格式:DOCX 页数:7 大小:18.10KB
收藏 版权申诉 举报 下载
Matlab学习心得系列-005.结构数组_第1页
第1页 / 共7页
Matlab学习心得系列-005.结构数组_第2页
第2页 / 共7页
Matlab学习心得系列-005.结构数组_第3页
第3页 / 共7页
资源描述:

《Matlab学习心得系列-005.结构数组》由会员分享,可在线阅读,更多相关《Matlab学习心得系列-005.结构数组(7页珍藏版)》请在装配图网上搜索。

1、005. 结构数组 编程语言要描述日常生活中的某一类事物,就是要赋予这类事物一个公共名称(类名),再把这类事物具有的各种属性分别存放为若干变量(数据元素),这就是“结构体”。结构体里再加上若干操作其数据元素的函数(成员函数),就是“类”。然后,“类”就可以作为新的数据类型定义对象(类的实例化),再操作这些对象,实现编程需要。 以上就是面向对象的编程思想(适合C++或Java)。 例如,描述学生,就用一个学生类Student;学生属性:学号、姓名、专业;实现操作:学生转专业。(粗略C++代码) class Student { private: //

2、 数据元素一般设为该类的私有数据,防止属性被随意修改 int number; string name; // string定义字符串 string major; public: // 成员函数一般设为可公共访问 Student(int num, string n, string m); // 类构造函数用于生成具体对象,必须与类名相同 void ChangeMajor(String newmajor); } Student:: Student(int num, string n, string m) { number = num; name

3、 = n; major = m; } void Student:: ChangeMajor(String newmajor) // Student::表示函数是来自Student类 { major = newmajor; } // 下面是使用Student类: Student s1; // 用Student类定义一个“学生”对象s1 s1. ChangeMajor(“Math”); // 把学生s1的专业修改为“Math” 可见,借助结构体或类的编程,既能与现实世界中的事物建立自然的

4、对应(符合思维习惯),又能实现模型化的“批量生产”(用“类”可以整体性地、一遍一遍地建立对象、操作对象)。这也是结构体或类(面向对象编程)的优势所在。 __________________________ 回到Matlab,元胞数组只是呆板的堆放数据的仓库,结构数组则具有了与实际对象所对应的结构属性,这等同于“C语言的结构体”、“C++或Java的类的数据成员部分”。 结构数组是由若干个结构(struct)组成,每个结构都包含多个结构域(fields);数据必须存放在结构域中,可以是任何类型、任意大小的数据。例如,多个图形对象构成一个结构数组,每个图形对象就是一个结构,图形对象的一个

5、属性对应一个结构域。 即,结构数组(矩阵)的元素是结构,每个结构包含若干结构域。 一、 结构数组的创建 1. 用直接赋值语句创建 例1 创建学生的结构数组,每个结构包含学号、姓名两个结构域(属性) student(1).number = '001'; % 直接对结构数组第1个结构s(1)的结构域number赋值 student(1).name = '张三'; student(1).number = '002'; student(2).name = '李四'; student 运行结果:student = 1x2 struct array w

6、ith fields: number name 注意:上面是一维结构数组,也可以是二维或更多维的,例如, student(1,2).name = '……'; 2. 用struct函数创建 语法:s = struct(‘field1’, values1, ‘field2’, values2, …) student(1) = struct('number', '001', 'name', '张三'); student(2) = struct('number', '

7、002', 'name', '李四'); student 运行结果同上。 二、结构数组的操作 1. 访问结构数组中的结构域 (1) 通过结构域访问操作符“.”例如, student(2).name 返回学生二的姓名:李四 (2) 利用deal( )函数 [name1, name2] = deal(student(:).name) 返回 name1 = 张三 name2 = 李四 “:” 表示所有结构域 (3) 利用getfield( )函数获取指定结构域的值, 对于前面的结构数组student,大小是1×2 getfield(student,{

8、1,2},'name') % 返回结构数组student第1行第2列的结构的结构域为name的值, % 相当于student(1,2).name 运行结果:ans = 李四 2. 其他操作 (1) 设置或修改结构域的值——setfield( ) student = setfield(student,{1,2},'name', ‘王五’); ——修改student(1,2).name的值为‘王五’ 注意:必须把setfield( )返回值赋给原结构数组,修改才会生效。 (2) 删除结构数组的指定结构域——rmfield( ) s.f

9、ield1 = [1,2,3]; s.field2 = 'string'; s.field3 = {1 2 3; 4 5 6}; s s = rmfield(s,{'field2','field3'}) s = rmfield(s,'field1') 运行结果:s = field1: [1 2 3] field2: 'string' field3: {2x3 cell} s = field1: [1 2 3] s = 1x1 struct array with no fields. 注

10、意:必须把rmfield( )返回值赋给原结构数组,删除才会生效。 (3) 判断函数 isfield(s, ‘fieldname’) ——判断s中是否含有名为fieldname的结构域; isstruct(s) ——判断s是否是结构数组 3. 结构数组与元胞数组的相互转换 (1) 结构数组转元胞数组——struct2cell( ) s.field1 = [1,2,3]; s.field2 = 'string'; s.field3 = {1 2 3; 4 5 6}; s c = struct2cell(s) 运行结果:s = field1: [1 2

11、3] field2: 'string' field3: {2x3 cell} c = [1x3 double] 'string' {2x3 cell } (2) 元胞数组转结构数组 s = cell2struct(c, fields, dim) c = {‘001’, ‘张三’, 175, 65; ‘002’, ‘李四’, 178, 70} fields = {'Num','Name','Heig

12、ht','Weight'}; % 临时变量,存放全部的结构域名 s = cell2struct(c,fields,2) % dim=2表示将c按行转为结构数组(即每行是一个结构) % dim=1表示将c按列转为机构数组(即每列是一个结构) s(1) 运行结果:c = '001' '张三' [175] [65] '002' '李四' [178] [70] s = 2x1 struct array with fields: Num Name Height Weight ans = Num: '001' Name: '张三' Height: 175 Weight: 65 下次内容:字符串。

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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