10/23/2006

如何轉換細胞陣列與結構陣列

細胞陣列與結構陣列之轉換

細胞陣列與結構陣列兩者間都是屬於資料結構之表示法,故其間之轉換也是一項重要的步驟,通常使用如下兩指令:


  • struct2cell:由結構陣列轉為細胞陣列。
    cell2struct:由細胞陣列轉為結構陣列。


  • 第一項可以直接由結構轉換細胞陣列,但會失去欄位之資訊。
    第二項由細胞陣列轉換為在後面多加兩項參數,其一為欄位名稱,其二為其維度。其指令型式為:


    c = struct2cell(s)
    s = cell2struct(c, fields, dim)


    舉例:

    >> clear book, book.category = 'novel'; ...
    book.name = '請用文明來說服我'; book.author = '龍應台'...
    ;book.price=500;
    >> book

    book =

    category: 'novel'
    name: '請用文明來說服我'
    author: '龍應台'
    price: 500

    >> cost=struct2cell(book) %由book結構轉為cost細胞陣列

    cost =

    'novel'
    '請用文明來說服我'
    '龍應台'
    [ 500]

    >> cost{3} %使用大括號

    ans =

    龍應台

    >> cost(2) %使用一般括號

    ans =

    '請用文明來說服我'

    >> cost{2} %使用大括號

    ans =

    請用文明來說服我


    最後之兩個指令雖然相同,但其意義不同,前者仍然是一個細胞之型式,後者為其內容。

    下面為由細胞轉回結構陣列之情形,必須在第二項加入欄位名稱,此名稱並不一定要與原先的一致:



    >> BOOK=cell2struct(cost,{'class' 'Book_name' 'Author' 'Price'})

    BOOK =

    class: 'novel'
    Book_name: '請用文明來說服我'
    Author: '龍應台'
    Price: 500

    >> BOOK.Book_name

    ans =

    請用文明來說服我



    最後一項顯然為其內容。若原來資料有多筆記錄,則必須加入dim之參數。

    沒有留言: