Matlab字段名索引



所以我有一个包含多个表的单元格数组,并且我正在尝试访问表的第一个列名。

c={'table1', 'table2', 'table3'}

以下两行都给了我错误:

fieldnames(c{1})(1) 
fieldnames(c{1}){1}
Error: ()-indexing must appear last in an index expression.

但如果我做以下操作,它会起作用:

fn=fieldnames(c{1})
fn{1}

有没有办法用一行代码做到这一点?有人能解释一下错误吗?

请参阅此问题。

一般来说,这些问题可以使用函数调用(或者是只返回输入的伪函数)来解决,也可以用对subsref:的显式调用来替换fn{}

subsref(fieldnames(c{1}),substruct('{}',{1}));

关于你为什么会出现错误的问题,也许这个链接会有所帮助。

我假设以下代码再现了您的数据结构:

col1 = [1; 2; 3];
col2 = [4; 5; 6];
t1 = table(col1, col2);
t2 = table(col1, col2);
t3 = table(col1, col2);
c = {t1, t2, t3};

如果是这样的话,那么这应该有效:

subsref(fieldnames(c{1}),substruct('{}',{1}))

相关内容

  • 没有找到相关文章

最新更新