hour to hour minute second conversion

7 ビュー (過去 30 日間)
sermet
sermet 2016 年 8 月 30 日
編集済み: Teja Muppirala 2016 年 8 月 30 日
I have an array represents hours, for example;
hour=[13.20,15.30,14.46,21];
Is there any matlab function to convert these hours to hour, minute, second? Example output;
hms=[13 12 0;15 18 0;14 27 36;21 0 0];

採用された回答

Stephen23
Stephen23 2016 年 8 月 30 日
編集済み: Stephen23 2016 年 8 月 30 日
The basic concept is easy to implement:
tmp = hour(:);
H = fix(tmp);
tmp = 60*(tmp-H);
M = fix(tmp);
tmp = 60*(tmp-M);
S = tmp;
hms = [H,M,S]
However this can lead to accumulated floating point errors. One way to resolve this would be to perform some intermediate rounding like this:
adj = 1e12;
tmp = round(hour(:)*adj)/adj;
H = fix(tmp);
tmp = round(60*(tmp-H)*adj)/adj;
M = fix(tmp);
tmp = round(60*(tmp-M)*adj)/adj;
S = tmp;
hms = [H,M,S]
to give
hms =
13 12 0
15 18 0
14 27 36
21 0 0

その他の回答 (1 件)

Teja Muppirala
Teja Muppirala 2016 年 8 月 30 日
編集済み: Teja Muppirala 2016 年 8 月 30 日
myTimes=[13.20,15.30,14.46,21];
HR = hours(myTimes');
[H,M,S] = hms(HR);
HMS = [H M S]
This gives
HMS =
13 12 0
15 18 0
14 27 36
21 0 0

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by