2017-04-19 6 views
0

日時変数を減算するとき、MATLABは小数点以下を四捨五入停止することができます。私は配列を持っているは、どのように私はdatetime型変数を入力して丸め誤差を行うには、MATLABでいくつかの問題を抱えてい

は、「t」とそれを呼び出すことができます、そしてそれは、DateTime型です。例えばt(2) = 00:01:35.6889999、およびt(1) = 00:01:35.3549042セイ 。

私がt(2)-t(1)を実行しようとすると、タイプ「duration」の回答が00:00:00になります。

私はこれらの時間の差を検索すると精度を維持したいと思います! すべてのヘルプ、または直接、このような問題に関連/応えるリンクへの方向をいただければ幸いです!私は&期間は、MATLABの変数を入力した日時を使用している慣れていませんよ!

追加情報:私は、MATLAB R2017a

Editを使用しています:私は私のスクリプトでFormat Long;を書かれています。

+0

'format long'コマンドを試したことがありますか? – qbzenker

+0

こんにちは!はい、私はそれを言及すべきでした!何かが起こる前に私はそれをスクリプトの2行目に書いています。 – Aheijna

+0

期間オブジェクトの[Format'プロパティ](https://www.mathworks.com/help/matlab/ref/duration.html#inputarg_displayFormat)を変更します。 – excaza

答えて

1

精度が失われていない2つの日付が異なる場合、これは動作するはずですが、あなただけのdisplay formatを変更する必要があります。

デフォルトの表示形式はHH:MM:SSです:

>> A = duration(0, 0, 0, 1.25) % 1.25 MS 

A = 

    duration 

    00:00:00 

あなたは小数部分を表示する形式を変更することができます。たとえば:

>> A.Format = 's' % Seconds only 

A = 

    duration 

    0.00125 sec 

>> A.Format = 'hh:mm:ss.SSSSSSSS' % HMS, up to 9 fractional second digits 

A = 

    duration 

    00:00:00.00125000 

またdouble配列を返すためにmillisecondssecondsのようなヘルパー関数を使用することができます。

>> seconds(A) 

ans = 

    0.0013 

>> milliseconds(A) 

ans = 

    1.2500 
+0

ああ、さらに良い - ありがとう! – Aheijna

0

のみ秒

second(t(1))-second(t(2)) 
+0

華麗な、ちょうど私が必要なもの!ありがとう! – Aheijna

1

Durationオブジェクトが実際に適切な精度を持っています。形式を設定しない限り、表示されません。

>> dur = duration(t(2) - t(1), 'Format', 's') 
dur = 
    duration 
    0.3341 sec 

フォーマットを設定してもしなくても、デュレーションオブジェクトから秒を直接取得できます。

>> format long 
>> seconds(dur) 
ans = 
    0.334095700000000 
>> seconds(t(2) - t(1)) 
ans = 
    0.334095700000000 
関連する問題