MatlabからPython2.7に移行し始めたばかりですが、.matファイルの読み取りに問題があります。時間情報はMatlabのdatenum形式で保存されます。それをよく知らない人のために:
シリアル日付番号は、暦日を固定基準日から経過した日数として表します。MATLABでは、シリアル日付番号1は0000年1月1日です。
また、MATLABはシリアル時間を使用して、真夜中から始まる日の端数を表します。たとえば、午後6時は0.75連続日数に相当します。したがって、MATLABの文字列「2003年10月31日午後6時」は日付番号731885.75です。
(Matlabドキュメントから取得)
これをPythonの時間形式に変換したいのですが、このチュートリアルを見つけました。要するに、著者は次のように述べています
Pythonを使用してこれを解析する
datetime.fromordinal(731965.04835648148)
と、結果は妥当に見える可能性があります[...]
(それ以上の変換の前に)、datetime.fromordinalは整数を期待しているので、これは私には機能しません:
>>> datetime.fromordinal(731965.04835648148)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: integer argument expected, got float
毎日のデータを切り捨てることもできますが、実際には時系列を細かくインポートする必要があります。誰かがこの問題の解決策を持っていますか?.matファイルはたくさんあり、同僚も一緒に作業する必要があるため、.matファイルの再フォーマットは避けたいと思います。
それが助けになるなら、誰か他の人が逆のことを求めました。悲しいことに、私はPythonに慣れていないので、そこで何が起こっているのかを本当に理解することはできません。
/ edit(2012-11-01):これは上記のチュートリアルで修正されました。