【问题标题】:Call structure field from a string variable从字符串变量调用结构字段
【发布时间】:2016-06-03 07:53:51
【问题描述】:

作为之前一些代码的输出,我得到了一个具有一定数量字段的结构,其数量可以改变。我想调用其中的最后一个,但我不知道应该使用什么来从动态变量中调用字段名称,因为根据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. 

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

【问题讨论】:

    标签: matlab data-structures struct


    【解决方案1】:

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

    class(names(end))
    ans = cell
    

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

    S.(names{end})
    

    【讨论】:

    • 完美运行。感谢您的清晰解释。
    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 2022-12-19
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多