【问题标题】:Iterate an array of structures in Matlab, ERROR: "Reference to non-existent field 'namefield'"在 Matlab 中迭代结构数组,错误:“引用不存在的字段 'namefield'”
【发布时间】:2013-03-28 10:11:46
【问题描述】:

我通过以下方式生成结构“str”的数组“AoS”:

for i = 1:iMax
    for j = 1:jMax
        str = calculatestructure();
        AoS(i,j) = str;
    end
end

现在,假设该结构有两个字段:str.field1、str.field2。我想获取AoS的Ith和Jth元素的str.field1的值,根据使用的方法报错如下。 如果我使用这两种方法中的任何一种,我会收到 错误:“引用不存在的字段 'field1'”

value = AoS(I,J).field1; % method 1
value = AoS.field1(I,J); % method 2

有什么想法吗?是否有空间命令来访问结构数组? hereherehere 显示的帮助实际上对这个问题没有用处。

非常感谢。

【问题讨论】:

    标签: arrays matlab struct


    【解决方案1】:

    您确定 calculatestructure() 的输出吗?我测试过:

    for i = 1:10
        for j = 1:10
            str = struct();
            str.field1=1;
            str.field2=2;
            AoS(i,j) = str;
        end
    end
    AoS(1,1).field1
    

    我确实在结构 AoS 的数组中的 1,1 位置获得了结构的字段 field1。也许 calculatestructure() 不会输出包含您认为的字段的结构。 AoS 真的是 iMax x jMax 结构数组吗?每个元素都有 field1 字段吗?

    【讨论】:

    • 实际上结构来自一个文件。我注意到如果我将它保存为“.mat”文件,我可以毫无问题地访问它,但如果我将它保存为“.m”文件,我可以使用图形界面访问它,但不能从代码访问它。 ..也许我应该更改问题的标题和描述...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2012-12-17
    • 2012-05-11
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多