MATLAB: Time conversion in a table

time conversion

Hi all, Let's say I have a table and one of my variable is a mix of numbers and NaNs, like so: [1010, NaN, 1256, NaN, 1345…]. Now, I want to convert the numbers into hours-minute format (HH:MM) and keep the same number of rows so the output looks like this : [10:10, NaN, 12:56, NaN, 13:45 …]. Any ideas? Thanks again, you guys are great!

Best Answer

a=[1010, NaN, 1256, NaN, 1345]
idx=isnan(a)
a(idx)=0
out=arrayfun(@(x) datestr(datenum(sprintf('%04d',x),'HHMM') ,'HH:MM') ,a,'un',0)
out(idx)={nan}