У меня есть структурный массив, содержащий поля в виде структурных массивов различной длины. Например:
'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' и средней длины 'данных', но фактическая длина каждого поля / подструктуры 'данных' сильно варьируется. Было бы лучше, если бы я переоценил все это и потом урезал получившийся массив? Нулевые отметки времени невозможны для набора данных, с которым я работаю, поэтому это не должно быть проблемой.