matlab 程式设计与应用结构阵列 - ecaa, ntu.pptVIP

  • 3
  • 0
  • 约9.01千字
  • 约 37页
  • 2017-09-02 发布于天津
  • 举报

matlab 程式设计与应用结构阵列 - ecaa, ntu.ppt

matlab 程式设计与应用结构阵列 - ecaa, ntu

結構陣列 (Structure Array) 方煒 台大生機系 傳統的資料庫 MATLAB give you much more flexibility 結構陣列的建立 每一個結構陣列(Structure Array)可以包含很多個元素 (Elements) 每個元素可以看成是一筆資料 每個元素可以包含數個欄位(Fields) 每個欄位可包含各個不同型態的資料 範例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 即代表一個結構陣列的第一個元素,或是第一筆資料。 範例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 範例3: 另一個建立結構陣列的方法 使用 struct 指令,其格式如下: structureArray = struct(field1, value1, field2, value2,….) 其中 field1、field2、…是欄位名稱,value1、value2、…則是欄位所包含的資料。 如果 value1、value2、…為異質陣列,則 MATLAB 為依序將異質陣列的每個元素設定為每一個結構中相對應的欄位值。 範例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)來自動補足,如範例四。 範例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 欄位值。 範例5: struct05.m 結構陣列可以是巢狀(Nested)的,也就是說,結構陣列的欄位可是另一個結構陣列,我們可以藉此產生複雜的資料結構 student = struct(name, {張庭碩, 張庭安}, scores, {[50 60], [60 70]}); student(2).course(1).title = Web Programming; student(2).course(1).credits = 2; student(2).course(2).ti

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档