結構陣列(structure arrays)是一種特別的資料結構,此結構的欄位是以巢狀陣列(cell arrays)表示,每一個巢狀陣列有相同的維度。結構陣列亦可視為資料結構所構成的陣列,而陣列中的資料結構所擁有的欄位皆相同。例如:
x(1).a = "string1"; x(2).a = "string2"; x(1).b = 1; x(2).b = 2;
這樣會建立一個 2
乘 1
的結構陣列,其包含兩個欄位。另一種建立結構陣列的方式是使用 struct()
函數(請參考建立結構)。若要顯示結構陣列中的資料,就像一般變數一樣輸入結構陣列的名稱即可:
x
輸出為
x = { 1x2 struct array containing the fields: a b }
要存取結構陣列中的元素,可以使用索引的方式,例如:
x(1)
這樣會傳回兩個欄位的資料結構,輸出為
ans = { a = string1 b = 1 }
若直接指定結構陣列中的欄位,則會將此欄位的資料以逗點分隔序列(請參考逗點分隔序列)的格式傳回,例如:
x.a
輸出為
ans = string1 ans = string2
亦可使用逗點分隔序列的方式指定結構陣列中的資料:
[x.a] = deal("new string1", "new string2");
這會設定 x(1).a
與 x(2).a
的資料:
x(1).a
輸出為
ans = new string1
x(2).a
輸出為
ans = new string2
結構陣列與一般數值陣列一樣可以使用向量作為為索引:
x(3:4) = x(1:2); [x([1,3]).a] = deal("other string1", "other string2"); x.a
輸出為
ans = other string1 ans = new string2 ans = other string2 ans = new string2
size()
函數可以輸出資料結構的維度,例如:
size(x)
輸出為
ans = 1 4
若要刪除結構陣列中的元素可以將其指定為空矩陣(empty matrix),此用法與一般數值陣列相同,例如:
in = struct ("call1", {x, Inf, "last"}, "call2", {x, Inf, "first"})
輸出為
in = { 1x3 struct array containing the fields: call1 call2 }
將第一個元素刪除:
in(1) = []; in.call1
輸出為
ans = Inf ans = last
size(in)
輸出為
ans = 1 2