如何在MATLAB中遍历嵌套的struct字段

时间:2013-03-11 23:18:35

标签: matlab struct

我有几个主题的数据,每个主题都进行了几项活动试验。我已经将所有数据读入格式的结构中     主体(1).trial(1).something     主体(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

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

2 个答案:

答案 0 :(得分:0)

我不太确定我理解你做或想要做的一切,但很明显,如果你有两个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

希望有所帮助。

答案 1 :(得分:0)

如果我正确地读了你的问题,你需要将每个试验放在一行,所以当你创建一个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