2014-01-11 39 views
2

當在Octave/MATLAB中加載不同的科學數據集時,我通常要做的第一件事就是弄清楚數據是如何組織的(它總是不同的)。通常他們進來一個巨大的結構與幾個不同的成員。我想找到他們的名字,尺寸和類型。單班輪將是可取的。八度 - 獲得結構摘要的簡單方法是什麼?

一個例子結構是

DDATA:

  • ddata.sig,尺寸350x120x280,數字
  • ddata.prd,大小350x280,數字
  • ddata.labels大小1x280,二進制

作爲彙總函數的一個例子,R有一個相當有用的功能summary()(雖然它不給的尺寸):

> summary(filedatas[[1]]) 
    Length Class Mode 
cnt 35218280 -none- numeric 
nfo  5 -none- list 
mrk  3 -none- list 
+1

您能否提供一個您要加載到Octave中的數據集示例? – juliohm

回答

2

這並不像看起來那麼容易。請注意,一個結構體可以是一個結構體數組,每個結構體的每個字段可以有不同的數據類型。在這種情況下,你的summary函數的行爲如何?

例如:

struct ("field1", {"text", 90}, "field2", {{1:3, "more"}, struct()}) 

也就是說,八度有一定的功能來定義如何結構得到顯示,print_struct_array_contentsstruct_levels_to_print,看到its manual

+0

有沒有一個啓動文件,我可以讓它們進入,就像'.octave'一樣? –

+1

@TrevorAlexander是的。您可以在您的主目錄上設置一個'.octaverc'文件,該文件在每個Octave會話開始時執行。我用它來創建一個名爲man的函數,它是一個幫助包裝器,將顏色設置爲提示,默認圖形位置等 – carandraug

2

聽起來whosdisp是最接近你以後 - disp可以只通過輸入變量名被調用。對於標量和矩陣,它顯示內容,但對於結構,您可以獲得字段摘要。下面是使用第一隨機數據集,我可以把我的手放在一個例子:

octave-3.6.4.exe:3> load ax204.mat 
octave-3.6.4.exe:4> whos 
Variables in the current scope: 

    Attr Name   Size      Bytes Class 
    ==== ====   ====      ===== ===== 
     dc   1x1      119 struct 
     index  1x989      7912 double 
     objects  1x989     15998424 struct 

Total is 1979 elements using 16006455 bytes 

octave-3.6.4.exe:5> dc 
dc = 

    scalar structure containing the fields: 

    fps = 2 
    hdr = 
    { 
     [1,1] = Frame 
     [1,2] = Time 
     [1,3] = Speed 
     [1,4] = X Cent 
     [1,5] = Y Cent 
     [1,6] = Length 
     [1,7] = AvgWid 
     [1,8] = Peri 
     [1,9] = Round 
    } 
    f = 1 
    t = 2 
    x = 4 
    y = 5 
    l = 6 
    aw = 7 
    p = 8 
    r = 9 

octave-3.6.4.exe:6> objects 
objects = 

    1x989 struct array containing the fields: 

    id 
    data 
    n 
    dir 
    dist 
    turn 
    reversals 
    merge 
    omg 
    rev 
    defrev 
    begfr 
    endfr 
    previd 
    begtm 
    endtm 
    begxpos 
    endxpos 
    begypos 
    endypos 
    xcent 
    ycent 
    spd 
    db 
    ab 

如果結構字段非標量,IIRC Matlab是明智的,並說像fieldname: [200x300 double],而倍頻歡快轉儲全部內容。

+0

我不會稱之爲'總結'。嘗試調用一個結構的名稱,並在其成員中使用大量數據點(如我在問題中提到的那樣); –

+1

@TrevorAlexander不幸的是,這幾乎是Matlab內置函數的限制 - 總結工作空間變量和轉儲結構字段。這裏有漂亮的打印結構代碼,但通常有幾十行代碼。 – Notlikethat

相關問題