более эффективно, если вы используете логическое индексирование напрямую (поэтому между ними нет команды find
). Если вы хотите автоматизировать все это, вы можете использовать структуру или ячейки:
% random vectors to create a minimum working example
heading = rand(100,1)*100;
speed = rand(size(heading));
% limit vector
lim = [0 20 40 60];
% declare storage structures
S = struct();
C = cell(1,length(lim)-1);
% loop through limits
for i = 1:length(lim)-1
% logical vector
lg = heading > lim(i) & heading <= lim(i+1);
% index (its faster to use logical vectors for indexing than integers)
chunk = speed(lg);
% assign to struct
fld = num2str(i,'F%d');
S.(fld) = chunk;
% assign to cell
C{i} = chunk;
end
Вы можете выбрать, нравится ли вам структурный или клеточный путь. Это не должно иметь никакого значения с точки зрения пространства памяти.
Лично я предпочитаю структуру, поскольку я могу определять имена, которые я могу интерпретировать, но также немного утомительно создавать имя поля, а не просто индексировать ячейку