用于循环从不同长度的结构中提取对象

时间:2013-05-13 15:52:29

标签: matlab

我有一个1x200结构的.mat文件(对应200个实验会话)。在这些细胞的每一个中,存在不同长度的基质(由600-800个1x1结构组成,对应于每个期间的试验次数)。在每个结构(试验)中,我希望单独存储单个值。我该怎么办呢?

allData< 1x200 struct> (所有会议)

allData(1,1)< 1x1 struct> (1节)

allData(1,1).trial< 600-800x1 struct> (所有试验在1个疗程中,试验数量是可变的)

allData(1,1).trial(1,1).value(我要存储的内容)

非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找一个嵌套循环:

OUTPUT = [];

for I=1:size(allData,2)
   for J=1:size(allData(1,I).trial,1)
      OUTPUT(end+1) = allData(1,I).trial(J,1).value;
   end
end

补充说明:
在Matlab size - 循环语句中使用for函数时,检查(如果需要在调试模式下)选择正确的维度非常重要。这就是为什么,根据这里讨论的数据格式,它首先说size(X,2),因为它是1x200结构,所以我们对第二维感兴趣;和size(Y,1)秒,因为它是600x1结构 由于OUTPUT的整体维度可能难以确定先验,因此将其初始化为空向量。这对于(end+1)'计数器'来说很重要,如果首先调用该命令时不知道该变量,则该计数器将失败。此后,它只会将value附加到OUTPUT