# loop for clock in MATLAB

4 views (last 30 days)
Samer Husam on 5 Jul 2012
hi all, I wanna do loop for an output to be like this
12:00
12:15
12:30
12:45
13:00
13:15
13:30
13:45
14:00
##### 2 CommentsShowHide 1 older comment
Samer Husam on 5 Jul 2012
I have GUI the user set the step up value (interval) of 15, 30 or 60 mins, in order to write these results in excel file each value in a cell of column A.
it suppose to go from 12:00-14:00 but with different interval based on user choose.

Andrei Bobrov on 5 Jul 2012
Edited: Andrei Bobrov on 6 Jul 2012
try
datestr(datenum(0,0,0,12,(0:15:15*9)',0),'HH:MM')
m=15;
id = [6 16];
time1 = cellstr(datestr(datenum(0,0,0,12,m*(1:diff(id)+1),0),'HH:MM'));
xlswrite('1.xlsx',time1,1,sprintf('A%d',id(1)));
Kevin Claytor on 5 Jul 2012
Looking at the documentation for datenum (<http://www.mathworks.com/help/techdoc/ref/datenum.html>) it looks like the minute increment is set by the line;
(0:15:15*9)'
in his code above, you would just have to change that to get different increment values (replace 15 -> 30 or 60).

Luffy on 5 Jul 2012
Edited: Luffy on 5 Jul 2012
Clock=char('12:00','12:15','12:30','12:45','13:00','13:15','13:30','13:45','14:00');
for i = 1:size(Clock,1)
Clock(i,:)
end
Samer Husam on 5 Jul 2012
the reason I need it to be in a loop cause I am going to write these results in excel file so its would be useful if its possible to do it in a loop..

Kye Taylor on 5 Jul 2012
Try running this script... It has some ideas you might use, but it is hardly optimal.
startTimeString = '12:00';
stopTimeString = '14:00';
startTimeDV = datevec(startTimeString);
stopTimeDV = datevec(stopTimeString);
timeInterval = input('Enter the time step in minutes.\n');
thisTime = startTimeDV;
while thisTime(4) < stopTimeDV(4)
% a hack to count +60 minutes as hour
thisTime = datevec(datestr(thisTime));
thisTimeString = datestr(thisTime);
disp(thisTimeString(end-7:end))
thisTime(5) = thisTime(5) + timeInterval;
end

Luffy on 6 Jul 2012
If you just want a loop with only 3 different intervals maybe this crude method can help Clock15=char('12:00','12:15','12:30','12:45','13:00','13:15','13:30','13:45','14:00');
Clock30=char('12:00','12:30','13:00','13:30','14:00');
Clock60=char('12:00','13:00','14:00');
based on gui if u use popup menu use switch case and give either of Clock15/Clock30/Clock60 to Clock and write a loop,
for i = 1:size(Clock,1)
Clock(i,:)
end
Samer Husam on 6 Jul 2012
the reason I need the loop cause I need to write it in excel later on, so i tired to make it something like that :
mins=15;
for i=6:16 %number of cell I want to write in.
time= datestr(datenum(0,0,0,12,mins,0),'HH:MM');
range = sprintf('A%i', i);
xlswrite('C:\Users\Samer\Desktop\Excel 1.xlsx',time,'Sheet1',range)
mins=mins+15;
end
but when its write it on excel it doesn't write the hole time in one cell, its each digit in one cell, do u have idea how to over come this ??? and thanks for ur previous idea..

Samer Husam on 6 Jul 2012
hi all, first I would like to thank you all for your cooperation and I really appreciate it, its all get the work, but the one I need it in my work is as follow:
mins=15;
for i=6:16 %number of cell I want to write in.
time= datestr(datenum(0,0,0,12,mins,0),'HH:MM');
range = sprintf('A%i', i);
xlswrite('C:\Users\Samer\Desktop\Excel 1.xlsx',time,'Sheet1',range)
mins=mins+15;
end
but the problem that I face now is its right each digit in one cell, so how could I overcome this problem ??
Samer Husam on 7 Jul 2012
@Andrei: yours is working, thanks a lot for you and for all of you who suggest really useful ideas.