从字符串变量调用结构字段

时间:2016-06-03 07:53:51

标签: matlab data-structures struct

作为一些先前代码的输出,我得到一个具有一定数量字段的结构,其数量可以改变。我想调用它们中的最后一个,但是我不知道从动态变量中调用字段名称应该用什么,因为根据this page我似乎应该使用圆括号,但它显然不是工作,因为如果我运行此代码:

A = rand(3,1);
B = rand(4,1);
C = rand(2,1);
S = struct('field1',A,'field2',B,'field3',C);
names = fieldnames(S);
S.(names(end));

我收到此错误:

Argument to dynamic structure reference must evaluate to a valid field name. 

为什么现在可以使用,我应该使用什么?

1 个答案:

答案 0 :(得分:1)

fieldnames函数实际上返回一个单元格。 当你使用流畅的括号'(',')'例如在 names(end)中,你实际上得到一个大小为1x1的单元格,其中包含字符串' field3':

class(names(end))
ans = cell

在您的情况下,您应该使用花括号来访问数据,以获取字段的字符串表示形式。换句话说,请使用以下语法:

S.(names{end})