分類: Octave

Octave 資料容器(Data Containers)

建立巢狀陣列(Creating Cell Arrays)

在基本巢狀陣列中已經介紹過如何使用已存在的資料建立一個巢狀陣列,然而在某些形況下會需要先建立一個巢狀陣列,而其中的資料隨後才會指定,此時可以使用 cell() 函數先產生指定維度的巢狀陣列,此函數的功能類似 zeros() 函數,由 cell() 函數所產生的巢狀陣列其所有的元素皆為空陣列。例如:

c = cell(2,2)

輸出為

c =

{
  [1,1] = [](0x0)
  [2,1] = [](0x0)
  [1,2] = [](0x0)
  [2,2] = [](0x0)
}

巢狀陣列與一般陣列一樣可以是多維度的,cell() 函數可以接受任何個數的正整數來指定所產生巢狀陣列的維度,亦可使用向量來指定其維度,例如:

c1 = cell(3, 4, 5);
c2 = cell( [3, 4, 5] );

所產生的 c1c2 是相同的巢狀陣列,要查看其維度可用 size() 函數:

size(c1)

輸出為

ans =

   3   4   5

除了 size() 函數之外,一般查詢物件大小的函數都可使用於巢狀陣列上,例如:lengthnumelrows()columns()

cell (x)
cell (n, m)
cell ([n, m])
cell (n, m, p, ...)
cell ([n, m, p, ...])

cell(x) 會建立一個 xx 的巢狀陣列;cell(n, m)cell([n, m]) 會建立 nm 的巢狀陣列;cell(n, m, p, ...)cell([n, m, p, ...]) 會建立多維度的巢狀陣列。

若要將數值陣列轉換為巢狀陣列,可以使用 num2cell()mat2cell() 函數。

c = num2cell (m)
c = num2cell (m, dim)

num2cell(m, dim) 會將數值矩陣 m 轉換為巢狀陣列,若有設定 dim 參數,則所傳回的巢狀陣列 c 的第 dim 個維度會是 1,而 c 中的元素則會是向量,例如:

a = [1,2,3;4,5,6];

將矩陣 a 轉為巢狀陣列:

num2cell(a)

輸出為

ans =

{
  [1,1] =  1
  [2,1] =  4
  [1,2] =  2
  [2,2] =  5
  [1,3] =  3
  [2,3] =  6
}
num2cell(a, 1)

輸出為

ans =

{
  [1,1] =

     1
     4

  [1,2] =

     2
     5

  [1,3] =

     3
     6

}
num2cell(a, 2)

輸出為

ans =

{
  [1,1] =

     1   2   3

  [2,1] =

     4   5   6

}
b = mat2cell (a, m, n)
b = mat2cell (a, d1, d2, ...)
b = mat2cell (a, r)

mat2cell(a, m, n) 會將矩陣 a 轉換為巢狀陣列,參數 mn 是指定如何分割矩陣 a,例如:

a = [1, 2, 3, 4, 5; 6, 7, 8, 9, 10; 11, 12, 13, 14, 15];

將矩陣 a 以圖中所表示的方法分割後轉為巢狀陣列:

mat2cell(a, [1, 2], [2, 3])

輸出為

ans =

{
  [1,1] =

     1   2

  [2,1] =

      6    7
     11   12

  [1,2] =

     3   4   5

  [2,2] =

      8    9   10
     13   14   15

}

mat2cell(a, m, n)m 的總和必須等於矩陣 a 的第一個維度,n 的總和必須等於矩陣 a 的第二個維度,更高維度的情況以此類推。

若只指定一個維度 r,則其餘的維度會被設定為 a 的維度,即第 i 個維度設為 size(a, i),例如:

mat2cell(a, [1, 2])

輸出為

ans =

{
  [1,1] =

     1   2   3   4   5

  [2,1] =

      6    7    8    9   10
     11   12   13   14   15

}

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

[台南旅遊景點] 頑皮世界野生動物園

本篇是今年暑假帶阿玄去頑皮世界...

4 年 ago

[台南西港] 請水電師傅更換抽水馬達、水塔浮球記錄

本篇記錄請水電師傅來更換抽水馬...

5 年 ago

羅勒(九層塔)扦插繁殖記錄(插條、插枝)

本篇是我最近使用扦插(插條、插...

5 年 ago

[開箱] Amazfit 華米 GTS 魅力版智慧手錶

本篇是 Amazfit 華米 ...

5 年 ago

HONDA ACCORD K9 方向機皮帶斷裂、更換記錄

本篇記錄我的 HONDA AC...

5 年 ago

[開箱] 小米手環 4

本篇是我最近購買小米手環 4 ...

5 年 ago