2014-01-11 40 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

相关问题