MATLAB程式设计与应用结构阵列.PPT

上传人:天*** 文档编号:972704 上传时间:2018-11-10 格式:PPT 页数:24 大小:115.50KB
下载 相关 举报
MATLAB程式设计与应用结构阵列.PPT_第1页
第1页 / 共24页
MATLAB程式设计与应用结构阵列.PPT_第2页
第2页 / 共24页
MATLAB程式设计与应用结构阵列.PPT_第3页
第3页 / 共24页
MATLAB程式设计与应用结构阵列.PPT_第4页
第4页 / 共24页
MATLAB程式设计与应用结构阵列.PPT_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、MATLAB 程式設計與應用結構陣列張智星jangcs.nthu.edu.twhttp:/www.cs.nthu.edu.tw/jang清大資工系 多媒體檢索實驗室MATLAB 程式設計入門篇:結構陣列13-1結構陣列的建立n 每一個結構陣列( Structure Array) 可以包含很多個元素,每一個元素可以看成是一筆資料。因此每個元素可以包含數個欄位( Fields), 而每個欄位可包含各個不同型態的資料。例如一個包含學生個人資料的結構陣列,可能含有的欄位是 name( 學生姓名)、 id( 學號)、 scores( 小考成績)等。要建立此種結構,可在指令列直接輸入個欄位的值 。MATL

2、AB 程式設計入門篇:結構陣列結構陣列之範例一n 範例 13-1 : struct01.mclear student % 清除 student 變數student.name = 洪鵬翔 ; % 加入 name 欄位student.id = mr871912; % 加入 id 欄位student.scores = 58, 75, 62; % 加入 scores 欄位student % 秀出結果student = name: 洪鵬翔 id: mr871912scores: 58,75,62n 此時 student 即代表一個結構陣列的第一個元素,或是第一筆資料。 MATLAB 程式設計入門篇:結構

3、陣列結構陣列之範例二n 範例 13-2 : struct02.mclear student % 清除 student 變數student.name = 洪鵬翔 ; % 加入 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 ar

4、ray with fields:NameIdscoresdent = 1x2 struct array with fields:NameIdscoresMATLAB 程式設計入門篇:結構陣列結構陣列之範例二n 此時 student 即代表一個 12 的結構陣列。由於此結構陣列已漸趨複雜, MATLAB 並不將所有欄位值印出。欲顯示某元素的特定欄位值,可輸入明確的敘述,例如 student(2).scores 等。n 另一個建立結構陣列的方法,則是使用 struct 指令,其格式如下:structureArray = struct(field1, value1, field2, value2,.

5、)n 其中 field1、 field2、 是欄位名稱, value1、 value2、 則是欄位所包含的資料。如果 value1、 value2、 為異質陣列( Cell Arrays, 詳見第上一章),則 MATLAB 為依序將異質陣列的每個元素設定為每一個結構中相對應的欄位值,如以下範例 13-3:MATLAB 程式設計入門篇:結構陣列結構陣列之範例三n 範例 13-3 : struct03.mstudent = struct(name, 張庭碩 , 張庭安 , scores, 50 60, 60 70);student(1) % 顯示 student(1)student(2) % 顯示

6、 student(2)ans = name: 張庭碩 scores: 50 60ans = name: 張庭安 scores: 60 70n 在上述使用法中, 張庭碩 , 張庭安 和 50 60, 60 70 都是異質陣列,因此他們的每個元素會被依次設定到每個結構之中。但是如果其中有一個異值陣列的長度是 1,那麼 MATLAB 會進行純量展開( Scalar Expansion) 來自動補足,如以下範例 13-4:MATLAB 程式設計入門篇:結構陣列結構陣列之範例四n 範例 13-4 : struct04.mstudent = struct(name, 張庭安 ,scores, 50 60,

7、 90 100);student(1) % 顯示 student(1)student(2) % 顯示 student(2)ans = name: 張庭安 scores: 50 60ans = name: 張庭安 scores: 90 100n 在上述範例中,張庭安可視為異質陣列的一個元素,因此在設定至 student 結構陣列時 , MATLAB 會進行純量展開,將張庭安分別設定到 student 的兩個元素的 name 欄位值。MATLAB 程式設計入門篇:結構陣列結構陣列之範例五n 結構陣列可以是巢狀式( Nested) 的,也就是說,結構陣列的欄位可是另一個結構陣列,我們可以藉此產生複雜

8、的資料結構n 範例 13-5 : struct05.mstudent = struct(name, 張庭碩 , 張庭安 , scores, 50 60, 60 70);student(2).course(1).title = Web Programming;student(2).course(1).credits = 2;student(2).course(2).title = Numerical Method;student(2).course(2).credits = 3;student(2).courseans = 1x2 struct array with fields:titlecr

9、editsMATLAB 程式設計入門篇:結構陣列 13-2 取用及改變結構陣列的資料Student結構陣列Student(1) Student(2) Student(3).name=banny.scores=85,80,92,78.name=joey.scores=80,85,90,88.name=batty.scores=88,82,90,80n 範例 13-6 : buildStruct01.m clear student % 清除 student 變數student(1) = struct(name, Banny, scores, 85,80,92,78);student(2) = st

10、ruct(name, Joey, scores, 80,85,90,88);student(3) = struct(name, Betty, scores, 88,82,90,80);n 上述的 student 結構陣列,可圖示如下:MATLAB 程式設計入門篇:結構陣列Struct2cell指令n 欲取用結構陣列中所有元素內所有欄位的資料,可用 struct2cell 指令,例如: values = struct2cell(student)values(:,:,1) = Banny1x4 doublevalues(:,:,2) = Joey1x4 doublevalues(:,:,3) = Betty1x4 doublen 請注意,傳回的 values 是一個異質陣列。一般而言,若輸入 struct2cell 指令的結構變數維度為 mn, 且包含 p 個欄位,則傳回異質陣列的維度為 pmn。 ( 在上例中, p = 2, m = 1, n = 3。)

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

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。