У меня есть набор траекторий пользователей: каждое текущее местоположение трейлеров имеет следующие поля: _ [userId год месяц день час минута вторая широта долгота regionId]. Основываясь на полевом дне, я хочу разделить траектории на основе суточного масштаба в интервале разных часов: 3 часа, 4 часа, 2 часа. Я понял, что это код, которые работают на интервале 4 часаmatlab: как найти интервал данных
% decomposedTraj is a struct that contains the trajectories based on daily scale
for i=1:size(decomposedTraj,2)
if ~isempty(decomposedTraj(i).dailyScaled)
% find the intervals
% interval [0-4]hours
Interval(i).interval_1=(decomposedTraj(i).dailyScaled(:,5)>=0&decomposedTraj(i).dailyScaled(:,5)<4);
% interval [4-8]hours
Interval(i).interval_2=(decomposedTraj(i).dailyScaled(:,5)>=4&decomposedTraj(i).dailyScaled(:,5)<8);
% interval [8-12]hours
Interval(i).interval_3=(decomposedTraj(i).dailyScaled(:,5)>=8&decomposedTraj(i).dailyScaled(:,5)<12);
% interval [12-16]hours
Interval(i).interval_4=(decomposedTraj(i).dailyScaled(:,5)>=12&decomposedTraj(i).dailyScaled(:,5)<16);
% interval [16-20]hours
Interval(i).interval_5=(decomposedTraj(i).dailyScaled(:,5)>=16&decomposedTraj(i).dailyScaled(:,5)<20);
% interval [20-0]hours
Interval(i).interval_6=(decomposedTraj(i).dailyScaled(:,5)>=20);
end
end
или более легко понять логику кода:
A=[22;19;15;15;0;20;22;19;15;15;0;20;20;0;22;21;17;23;22]';
A(A>=0&A<4)
A(A>=4&A<8)
A(A>=8&A<12)
A(A>=12&A<16)
A(A>=16&A<20)
A(A>=20)
Он работает и дает правильный ответ, но это не умный: если Я хочу изменить интервал, я должен изменить весь код ... Можете ли вы помочь мне найти интеллектуальное решение, более динамичное из этого? спасибо 0 Комментарии
ваш код дает мне эту ошибку: 'Операнды || и операторы && должны быть преобразованы в логические скалярные значения. ' – elis56
@ elis56 Похоже, что это исправлено в редактировании. –
Да, вы правы, это была ошибка. Должно быть '&' вместо '&&'. – ThP