【问题标题】:How to loop through nested struct fields in MATLAB如何遍历 MATLAB 中的嵌套结构字段
【发布时间】:2013-03-11 23:18:34
【问题描述】:

我有几个受试者的数据,每个受试者都对一项活动进行了几次试验。我已将所有数据读入格式的结构 subject(1).trial(1).something subject(1).trial(2).somethingelse 等等

现在我需要将每个试验读入一个大矩阵 [A] 以对每个试验进行一些计算,就好像主题无关紧要。所以我从这个开始:

for i = 2:numSubjects
    for j = 1:numTrials
    A(j,:) = cat(2,subject(i).trial(j).torque_integral,     subject(i).trial(j).work_integral); 
    end
end

但这仅适用于第一个主题。当主题 (i) 增加到 3 时,试验 (j) 将回到 1。所以这个想法是输出 A 像这样排列:

主题|试验|A

1 1 1

1 2 2

1 3 3

2 1 4

2 2 5

2 3 6

希望这很清楚。有什么想法吗?

【问题讨论】:

  • 看起来循环正在遍历每个主题(忽略第一个),然后是每个主题的每次试验。该代码通常与输出匹配,该输出与我可能想要对此循环执行的操作相匹配。你想让我做什么?你能张贴一张你想看的表格(主题、试验)吗?

标签: matlab struct


【解决方案1】:

如果我正确阅读了您的问题,您需要将每个试验放在一行中,因此当您创建 A 变量时,不要使用 j 作为索引,只需使用新索引... 哈哈,好像有人在我面前发布了同样的东西……

m=1
for i = 2:numSubjects
    for j = 1:numTrials
       A(m,:) = cat(2,subject(i).trial(j).torque_integral,subject(i).trial(j).work_integral);
       m=m+1; 
    end
end

【讨论】:

    【解决方案2】:

    我不太确定我是否了解您所做或想要做的所有事情,但显然如果您有两个 for 循环,其中内部的循环以 1 开头,外部的每增加一个循环,它将以一个开头.. .

    怎么样:

    k=0;
    for i = 2:numSubjects
        for j = 1:numTrials
        k=k+1;
        A(k,:) = cat(2,subject(i).trial(j).torque_integral,     subject(i).trial(j).work_integral); 
        end
    end
    

    希望对您有所帮助。

    【讨论】:

    • 好的,谢谢!我知道这很容易,只是无法绕开它
    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多