我有一个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(我要存储的内容)
非常感谢!
答案 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
。