Как конвертировать вектор часов, например 22.93, во время дня?Конвертировать время от времени в matlab
Так что 22.93 должно быть преобразовано в 22:55:48? Благодаря!
Как конвертировать вектор часов, например 22.93, во время дня?Конвертировать время от времени в matlab
Так что 22.93 должно быть преобразовано в 22:55:48? Благодаря!
Как обсуждалось here, это может быть сделано с помощью datestr
:
>> datestr(22.93/24,'HH:MM:SS')
ans =
22:55:48
Обратите внимание, что я разделив на 24, потому что datestr
ожидает, что дробная часть, чтобы представлять «процент в день» (который имеет 24 часа).
В качестве примера для вектора, также включая суффикс AM/PM:
v = [22.93 13.6167 16.3334];
strcat(datestr(v(:)/24,'HH:MM:SS'),{' '},datestr(v(:)/24,'AM'))
ans =
'22:55:48 PM'
'13:37:00 PM'
'16:20:00 PM'
Обратите внимание, что здесь результат является cell
массивом char
векторов-строк, где в первом случае это было char
массивом.
Если то, что вы делаете позволяет генерировать значения времени я бы рекомендовал использовать формат ниже, потому что все эти функции встроены.
http://www.mathworks.com/help/matlab/ref/datenum.html
В противном случае, если вы не имеете никакого контроля над тем, как данные вам, возможно, захочется преобразовать вектор в массив ячеек, чтобы вы могли использовать cellfun (functionName, matrix) в массиве ячеек для применения функции «functionName» к каждой ячейке. Тогда все, что вам нужно сделать, это написать функцию, чтобы преобразовать час как двойной в стандартный формат времени и заменить на него имя функции.
% hours h minutes m seconds s
h0=22.93;
h=floor(h0)
m=floor((h0-floor(h0))*60)
s=60*((h0-floor(h0))*60 -floor((h0-floor(h0))*60))
Когда время в 24-часовом формате, AM/PM обычно не указывается. Вы уверены, что это то, что вы хотите? –
Возможно, именно так данные были представлены мне в программном обеспечении. Может быть, вы недостаточно умны, чтобы делать другие предположения ... – TYL