MATLAB: Transforming minutes into time

time transformation

let col1 contain the following values
905
990
1117
1228
1306
16
149
211
276
347
418
478
533
581
631
679
730
795
How can I transform the above values into time HH:MM. 905/60=15,08. or 15:05 o'clock and so on

Best Answer

Your minutes array is rolling over to a new day at index = 5, so this adds days whenever the day ‘resets’.
Version #1 — if you have repelem (new in R2015a):
T2400 = [1; find(diff(Tv) < 0); size(Tv,1)+1];
Tv = Tv + repelem([0:length(diff(T2400))-1], diff(T2400))' * 1440;
Result = datestr(datenum([01 01 01]) + Tv/1440, 'HH:MM')
Version #2 (without repelem):
T2400 = [1; find(diff(Tv) < 0); size(Tv,1)];
days = 0;
for k1 = 1:length(T2400)-1
Tv(T2400(k1):T2400(k1+1)) = Tv(T2400(k1):T2400(k1+1)) + days*1440;
days = days + 1;
end
Result = datestr(datenum([01 01 01]) + Tv/1440, 'HH:MM')
Result =
15:05
16:30
18:37
20:28
21:46
00:16
02:29
03:31
04:36
05:47
06:58
07:58
08:53
09:41
10:31
11:19
12:10
13:15
EDIT — Added ‘Version #1’.