- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab学习心得系列-005.结构数组
005. 结构数组
编程语言要描述日常生活中的某一类事物,就是要赋予这类事物一个公共名称(类名),再把这类事物具有的各种属性分别存放为若干变量(数据元素),这就是“结构体”。结构体里再加上若干操作其数据元素的函数(成员函数),就是“类”。然后,“类”就可以作为新的数据类型定义对象(类的实例化),再操作这些对象,实现编程需要。
以上就是面向对象的编程思想(适合C++或Java)。
例如,描述学生,就用一个学生类Student;学生属性:学号、姓名、专业;实现操作:学生转专业。(粗略C++代码)
class Student
{
private: // 数据元素一般设为该类的私有数据,防止属性被随意修改
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 = n;
major = m;
}
void Student:: ChangeMajor(String newmajor) // Student::表示函数是来自Student类
{
major = newmajor;
}
// 下面是使用Student类:
Student s1; // 用Student类定义一个“学生”对象s1
s1. ChangeMajor(“Math”); // 把学生s1的专业修改为“Math”
可见,借助结构体或类的编程,既能与现实世界中的事物建立自然的对应(符合思维习惯),又能实现模型化的“批量生产”(用“类”可以整体性地、一遍一遍地建立对象、操作对象)。这也是结构体或类(面向对象编程)的优势所在。
__________________________
回到Matlab,元胞数组只是呆板的堆放数据的仓库,结构数组则具有了与实际对象所对应的结构属性,这等同于“C语言的结构体”、“C++或Java的类的数据成员部分”。
结构数组是由若干个结构(struct)组成,每个结构都包含多个结构域(fields);数据必须存放在结构域中,可以是任何类型、任意大小的数据。例如,多个图形对象构成一个结构数组,每个图形对象就是一个结构,图形对象的一个属性对应一个结构域。
即,结构数组(矩阵)的元素是结构,每个结构包含若干结构域。
结构数组的创建
用直接赋值语句创建
例1 创建学生的结构数组,每个结构包含学号、姓名两个结构域(属性)
student(1).number = 001;
% 直接对结构数组第1个结构s(1)的结构域number赋值
student(1).name = 张三;
student(1).number = 002;
student(2).name = 李四;
student
运行结果:student = 1x2 struct array with fields:
number
name
注意:上面是一维结构数组,也可以是二维或更多维的,例如,
student(1,2).name = ……;
用struct函数创建
语法:s = struct(‘field1’, values1, ‘field2’, values2, …)
student(1) = struct(number, 001, name, 张三);
student(2) = struct(number, 002, name, 李四);
student
运行结果同上。
二、结构数组的操作
访问结构数组中的结构域
通过结构域访问操作符“.”例如,
student(2).name 返回学生二的姓名:李四
利用deal( )函数
[name1, name2] = deal(student(:).name)
返回 name1 = 张三 name2 = 李四
“:” 表示所有结构域
利用getfield( )函数获取指定结构域的值,
对于前面的结构数组student,大小是1×2
getfield(student,{1,2},name)
% 返回结构数组student第1行第2列的结构的结
文档评论(0)