我有一个结构数组,其中包含作为不同长度的结构数组的字段。例如:
's' 是一个结构体 'data' 是 's' 中的一个字段,也是一个结构体数组本身和
length(s(n).data) ~= length(s(m).data)
我想预先分配一个数组,该数组从每个字段 s.data.timestamp 中获取时间戳。有没有办法在不使用 for 循环两次的情况下做到这一点?这是我到目前为止所拥有的:
% find the total length
count=0;
for x=1:length(s)
count=count+length(s(x).data);
end
% preallocate timestamp array
timestamp=zeros(1,count);
% populate timestamp array
index=1;
for x=1:length(s)
for y=1:length(s(x).data)
timestamp(index)=s(x).data(y).timestamp;
index=index+1;
end
end
我考虑过根据“s”的长度和“数据”的平均长度高估我需要的长度,但每个“数据”字段/子结构的实际长度差异很大。我是否会更好地高估它的结果并随后修剪结果数组?对于我正在使用的数据集,零时间戳是不可能的,所以这应该不是问题。