loop for clock in MATLAB

Asked by Samer Husam on 5 Jul 2012
Latest activity Commented on by Samer Husam on 7 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

how can I get this output in MATLAB??? please help and advice...

2 Comments

Jan Simon on 5 Jul 2012

Please add any details by editing the question, because it is not clear, what you want to achieve and which level of variability you want.

In addition it is recommended to use meaningful tags, because they are used to classify the questions. Nearly all questions concern "Matlab code". I'm not able to give better tags by my own, because you did not specify, if your problem concerns a TIMER, SPRINTF, FPRINTF to the command window or to a file, a GUI, etc.

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.

Samer Husam

Products

No products are associated with this question.

5 Answers

Answer by Andrei Bobrov on 5 Jul 2012
Edited by Andrei Bobrov on 6 Jul 2012
Accepted answer

try

datestr(datenum(0,0,0,12,(0:15:15*9)',0),'HH:MM')

ADD after Samer's answer

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)));

5 Comments

Jan Simon on 5 Jul 2012

@Samer Husam: You can edit your comments and do not have to post two different ones.

What exactly does "do it as loop of interval 15 mins" mean? What is the difference between the reuslts of the shown code and your expectations?

Samer Husam on 5 Jul 2012

the user can set to change the time by 15, 30 and 60 mins. after that I need to write it in excel file, so i need to do it in a loop in order to achieve that..

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).

Andrei Bobrov
Answer by Luffy on 5 Jul 2012
Edited by 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
 Does this help you

4 Comments

Luffy on 5 Jul 2012
 what does interval of 15 mins mean,i think it is already as interval of 15mins(12:00,12:15)
Luffy on 5 Jul 2012
 whatever interval u want say i,
 try this:
 datestr(datenum(0,0,0,12,(0:i:i*9)',0),'HH:MM');
 if u want more values change 9 to number of values u need.
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..

Luffy
Answer by 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

0 Comments

Kye Taylor
Answer by 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
Does this help you

1 Comment

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..

Luffy
Answer by 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 ??

your help really appreciated. thanks

6 Comments

Andrei Bobrov on 7 Jul 2012

My variant is bad?

Samer Husam on 7 Jul 2012

@Jan Simon: I tried to specify it also but it didn't write in one cell, it write as previous exactly..

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.

Samer Husam

Contact us