分類: Octave

Octave 資料容器(Data Containers)

結構陣列(Structure Arrays)

結構陣列(structure arrays)是一種特別的資料結構,此結構的欄位是以巢狀陣列(cell arrays)表示,每一個巢狀陣列有相同的維度。結構陣列亦可視為資料結構所構成的陣列,而陣列中的資料結構所擁有的欄位皆相同。例如:

x(1).a = "string1";
x(2).a = "string2";
x(1).b = 1;
x(2).b = 2;

這樣會建立一個 21 的結構陣列,其包含兩個欄位。另一種建立結構陣列的方式是使用 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).ax(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

Page: 1 2 3 4 5 6 7 8 9 10 11 12

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang
標籤: 數學

Recent Posts

[DIY] 自製凡士林火種

這裡介紹如何利用簡單的凡士林與...

2 年 ago

[DIY] 自製火影木葉、砂忍者村標誌雕刻木牌

本篇記錄我用路邊撿來的樟木與龍...

2 年 ago

收集龍眼木修剪枝幹用於木頭工藝

最近打算帶著阿玄做一些木工作品...

2 年 ago

[DIY] 樟木手工自製迷你手裏劍(忍者武器)

本篇記錄阿玄第一次使用木工工具...

2 年 ago

[DIY] 龍眼木手工自製木槌

本篇記錄我用自己砍的龍眼木還有...

2 年 ago

[DIY] 樟木手工自製苦無(忍者武器)

本篇記錄我自己用樟木的枝幹,以...

2 年 ago