在Octave / MATLAB中加载不同的科学数据集时,我通常要做的第一件事就是弄清楚数据是如何组织的(它总是不同的)。通常它们有一个巨大的结构,有几个不同的成员。我想找到他们的名字,尺寸和类型。单线是最好的。
示例结构是
DDATA:
作为汇总函数的一个例子,R有一个非常有用的函数summary()
(尽管它没有给出维度):
> summary(filedatas[[1]])
Length Class Mode
cnt 35218280 -none- numeric
nfo 5 -none- list
mrk 3 -none- list
答案 0 :(得分:2)
听起来像whos
和disp
最接近您所追求的内容 - 只需输入变量名即可调用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]
之类的东西,而Octave则快乐地转储整个内容。
答案 1 :(得分:2)
这并不像看起来那么容易。请注意,struct可以是struct数组,每个结构的每个字段可以有不同的数据类型。在这种情况下,summary
函数如何表现?
例如:
struct ("field1", {"text", 90}, "field2", {{1:3, "more"}, struct()})
也就是说,Octave有一些函数来定义结构的显示方式,print_struct_array_contents
和struct_levels_to_print
,请参阅its manual。