How to index time interval more efficiently?
2 次查看(过去 30 天)
显示 更早的评论
Hi Matlab Coder, The objective is to index each of the matrix, as follow
where_owl = [8 9 32 33 56 57] owl_hide = [9 20 33 44 57 68] owl_awake = [0 8 24 32 48 56]
How to make following code more compact and efficient, especially the for-loop. Thanks in advance
s.days = 3; s.sph = 3600; s.hpd = 24; s.mph = 60;
owl_awake = zeros(1,10); owl_hide = zeros(1,10); where_owl = zeros(1,10); total_hour = 2 * s.days *s.hpd; last_iteration = total_hour/s.hpd; s.sleeptime_time =zeros (1,last_iteration); a=0; %%%%% Case 1: Timing| All unit in seconds for i = 1:2:last_iteration a=a+1; % owl_awake 0000 to 0800 every day owl_awake (:,i) = ((a-1)*s.hpd); owl_awake (:,(i+1))= (8+ ((a-1)*s.hpd)); % owl_hide between 0900 and 2000 owl_hide (:,i) = (9 + ((a-1)*s.hpd)); owl_hide (:,(i+1)) = (20 + ((a-1)*s.hpd)); % where is the owl where_owl (:,i) = (8 + ((a-1)*s.hpd)) ; where_owl (:,(i+1)) = (9 + ((a-1)*s.hpd)); end
采纳的回答
David Goodmanson
2017-6-28
编辑:David Goodmanson
2017-6-28
Hi balandong,
Here is one way to accomplish this. At present the function in the script below has no semicolons at the end of a couple of lines so it illustrates what is going on.
s.days = 3
owl_awake = owl(s.days,[0 8])
owl_hide = owl(s.days,[9 20])
% etc.
function hoursvec = owl(ndays,interval)
rep24 = 24*(0:ndays-1);
[a b] = meshgrid(rep24,interval)
apb = (a+b)
hoursvec = apb(:)';
end
If I may ask, what is the owl doing between the hours of 2000 and 2400?