Struct 从八度结构中提取给定字段名的所有行的值
如何从一个倍频程Struct 从八度结构中提取给定字段名的所有行的值,struct,field,octave,Struct,Field,Octave,如何从一个倍频程struct? 我会把它放入一个单元格数组,或者一个正则向量,最好不要循环。你似乎把一些事情弄糊涂了。部分原因是您将结构与“R dataframes/python”进行了等价比较 结构最好被认为类似于python dict、R列表等。它们是一个特殊的对象,可以保存“字段”,可以通过“字段名”(或者通过键访问的值,如果您愿意的话)访问 此外,与倍频程中的任何其他对象一样,它们也是数组的有效元素。这意味着你可以有这样的东西: octave:1> struct( 'name',
struct
?
我会把它放入一个单元格数组,或者一个正则向量,最好不要循环。你似乎把一些事情弄糊涂了。部分原因是您将结构与“R dataframes/python”进行了等价比较 结构最好被认为类似于python dict、R列表等。它们是一个特殊的对象,可以保存“字段”,可以通过“字段名”(或者通过键访问的值,如果您愿意的话)访问 此外,与倍频程中的任何其他对象一样,它们也是数组的有效元素。这意味着你可以有这样的东西:
octave:1> struct( 'name', { 'Tom', 'Jim'; 'Ann', 'Sue' }, 'age', { 20, 21; 22, 23 } )
S =
2x2 struct array containing the fields:
name
age
通常,当处理这样一个结构数组时,访问数组中多个元素上的字段会产生一个错误。例如
这可以传递给(即“扩展为”)任何需要逗号分隔列表作为参数的函数。例如
octave:7> fprintf( 'The girls names are %s, and %s.\n', S(2,:).name )
The girls names are Ann, and Sue.
如果需要,还可以将该列表直接传递到“单元构造函数”中,以创建单元。(不过,如果你想让它有一个特定的形状,你必须在后记中重塑它)。例如
还有struct2cell
,但它做了一些不同的事情。尝试查看它的功能(例如,C=struct2cell
)
最后,为了避免混淆,考虑到在处理结构数组时,“列”指的是“数组”中的列,我将避免使用该术语指的是“字段名”。所指的问题(至少有一个有效的答案):
myarr=[struc.field]
@sancho.srestemonicacellio yes这将生成一个逗号分隔的列表,并将其捕获到括号中,从而有效地创建一个水平数组。这实际上与我在这里更详细地展示的内容相同。但正如我在另一篇文章中所说的,您可能并不是在寻找结构数组。您可能正在寻找数组结构(这将是最接近数据帧的结构)。有关更多详细信息,请参阅我的其他答案。太好了,我将对此进行检查。
octave:7> fprintf( 'The girls names are %s, and %s.\n', S(2,:).name )
The girls names are Ann, and Sue.
octave:9> reshape( { S.age }, size(S) )
ans =
{
[1,1] = 20
[2,1] = 22
[1,2] = 21
[2,2] = 23
}