我有一个用户轨迹数据集:每个当前的训练点都有这些fields:_、userId、月、日、小时、分钟、纬度、经度regionId。基于野外日,我要根据不同时间间隔的日尺度来划分轨迹:3小时,4小时,2小时。我已经意识到这个代码的运行间隔为4小时。
% 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)它运行并给出正确的答案,但这并不明智:如果我想改变间隔,我必须更改所有的代码.你能帮我找到一个更实用的解决方案吗?谢谢你的评论
发布于 2016-06-03 12:45:47
Interval k在您的示例中被定义为[(k-1)*N k*N],其中N=4。因此,您可以使用for循环执行相同的操作:
for k=1:floor(24/N)
Interval(k) = A(A>=(k-1)*N & A<k*N);
end请注意,在本例中,每个A(A>=(k-1)*N & A<k*N)的大小不一定相同,因此Interval应该是一个单元格数组。
https://stackoverflow.com/questions/37614571
复制相似问题