- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
13-malab 结构数组
MATLAB 程序设计与应用结构数组 13-1结构数组的建立 每一个结构数组(Structure Array)可以包含很多个元素,每一个元素可以看成是一笔数据。因此每个元素可以包含数个字段(Fields),而每个字段可包含各个不同型态的数据。例如一个包含学生个人数据的结构数组,可能含有的字段是 name(学生姓名)、id(学号)、scores(小考成绩)等。要建立此种结构,可在指令列直接输入个字段的值。 结构数组之范例一 范例13-1 : struct01.m clear student %清除student变数 = ‘洪鹏翔’; % 加入 name 字段 student.id = ‘mr871912’; % 加入 id 字段 student.scores = [58, 75, 62]; % 加入 scores 字段 student % 秀出结果 student = name: 洪鹏翔 id: mr871912 scores: [58,75,62]‘ 此时student即代表一个结构数组的第一个元素,或是第一笔数据。 结构数组之范例二 范例13-2 : struct02.m clear student % 清除 student 变数 = ‘洪鹏翔’; % 加入 name 字段 student.id = ‘mr871912’; % 加入 id 字段 student.scores = [58, 75, 62]; % 加入 scores 字段 % 以下是新加入的第二笔数据 student(2).name = 邱中人; student(2).id = mr872510; student(2).scores = [25, 36, 92]; student %秀出结果 student = 1x2 struct array with fields: Name Id scores dent = 1x2 struct array with fields: Name Id scores 结构数组之范例二 此时student即代表一个1×2的结构数组。由于此结构数组已渐趋复杂,MATLAB并不将所有字段值印出。欲显示某元素的特定字段值,可输入明确的叙述,例如student(2).scores等。 另一个建立结构数组的方法,则是使用struct指令,其格式如下: structureArray = struct(field1, value1, field2, value2,….) 其中field1、field2、…是字段名称,value1、value2、…则是字段所包含的数据。如果value1、value2、…为异质数组(Cell Arrays,详见第上一章),则MATLAB为依序将异质数组的每个元素设定为每一个结构中相对应的字段值,如以下范例13-3: 结构数组之范例三 范例13-3 : struct03.m student = struct(name, {张庭硕, 张庭安}, scores, {[50 60], [60 70]}); student(1) % 显示 student(1) student(2) % 显示 student(2) ans = name: 张庭硕‘ scores: [50 60] ans = name: 张庭安 scores: [60 70] 在上述使用法中,{‘张庭硕’, ‘张庭安’} 和{[50 60], [60 70]}都是异质数组,因此他们的每个元素会被依次设定到每个结构之中。但是如果其中有一个异值数组的长度是1,那么MATLAB会进行「纯量展开」(Scalar Expansion)来自动补足,如以下范例13-4: 结构数组之范例四 范例13-4 : struct04.m student = struct(name, 张庭安‘,scores, {[50 60], [90 100]}); student(1) % 显示 student(1) student(2) % 显示 student(2) ans = name: 张庭安 scores: [50 60] ans = name: 张庭安 scores: [90 100] 在上述范例中,「张庭安」可视为异质数组的一个元素,因此在设定至student结构数组时,MATLAB会进行纯量展开,将「张庭安」分别设定到student的两个元素的name
文档评论(0)