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

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

ID:47204418

大小:58.71 KB

页数:6页

时间:2019-08-26

Matlab学习心得系列——005结构数组_第1页
Matlab学习心得系列——005结构数组_第2页
Matlab学习心得系列——005结构数组_第3页
Matlab学习心得系列——005结构数组_第4页
Matlab学习心得系列——005结构数组_第5页
Matlab学习心得系列——005结构数组_第6页
资源描述:

《Matlab学习心得系列——005结构数组》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、止属性被随意修改intnumber;stringname;//string定义字符串stringmajor;public://成员函数一般设为可公共访问Student(intnum,stringn,stringm);〃类构造函数用于生成具体对彖,必须与类名相同voidChangeMajor(Stringnewmajor);}Student::Student(intnum,stringn,stringm){number=num;name=n;major=m;major=newmajor;}//下面是使用Student类:Studentsi;//用Student类定

3、义一个“学生”对象sisi.ChangeMajor("Math");〃把学生si的专业修改为“Math”可见,借助结构体或类的编程,既能与现实世界中的事物建立自然的对应(符合思维习惯),又能实现模型化的“批量生产”(用“类”可以整体性地、一遍一遍地建立对象、操作对象)。这也是结构体或类(面向对象编程)的优势所在。回到Matlab,元胞数组只是呆板的堆放数据的仓库,结构数组则具有了与实际对象所对应的结构属性,这等同于“C语言的结构体”、“C++或Java的类的数据成员部分”。结构数组是由若干个结构(struct)组成,每个结构都包含多个结构域(fields);数据

4、必须存放在结构域中,可以是任何类型、任意大小的数据。例如,多个图形对象构成一个结构数组,每个图形对象就是一个结构,图形对象的一个属性对应一个结构域。即,结构数组(矩阵)的元索是结构,每个结构包含若干结构域。一、结构数组的创建1.用直接赋值语句创建例1创建学生的结构数组,每个结构包含学号、姓名两个结构域(属性)student(l)・number=1001f;%直接对结构数组第1个结构s(1)的结构域number赋值student(1)・name=1张三1;student(1)・number=*002';student(2)・name=,李四,;student运行结

5、果:student=1x2structarraywithfields:numbername注意:上面是一维结构数组,也可以是二维或更多维的,例如,student(l,2).name='1.用struct函数创建语法:s=struct(zfieldl,,valuesl,zfield2values2,...)student(l)=struct(*number1,10011,1name1,,张三J;student(2)=struct(1number1,f002*,1name1,,李四J;student运行结果同上。二、结构数组的操作1.访问结构数组中的结构域(1)通

6、过结构域访问操作符例如,student(2).name返冋学生二的姓名:李四(1)利用deal()函数[namel,name2]=deal(student(:)・name)返回namel二张三name2二李四“:”表示所有结构域(2)利用getfield()函数获取指定结构域的值,对于前而的结构数组student,大小是1X2getfield(student,{1,2},*name1)%返回结构数组student第1行第2列的结构的结构域为name的值,%相当于student(1,2)・name运行结果:ans=李四1.其他操作(1)设置或修改结构域的值setf

7、ield()student=setfield(student,{1,2},'name1,'王五');修改student(l,2)-name的值为'王五,注意:必须把setfield()返回值赋给原结构数组,修改才会生效。(2)删除结构数组的指定结构域——rmfield()s.fieldls•field2s・field3s=[1,2,3];=1string1;={123;456};s=rmfield(s,{1field21,1field31})s=rmfield(s,1fieldl1)运行结果:s=fieldl:[123]field2:'string'field3

8、:{2x3cell}s=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。