作为一些先前代码的输出,我得到一个具有一定数量字段的结构,其数量可以改变。我想调用它们中的最后一个,但是我不知道从动态变量中调用字段名称应该用什么,因为根据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.
为什么现在可以使用,我应该使用什么?
答案 0 :(得分:1)
fieldnames函数实际上返回一个单元格。 当你使用流畅的括号'(',')'例如在 names(end)中,你实际上得到一个大小为1x1的单元格,其中包含字符串' field3':
class(names(end))
ans = cell
在您的情况下,您应该使用花括号来访问数据,以获取字段的字符串表示形式。换句话说,请使用以下语法:
S.(names{end})