如何从python读取matlab持续时间对象

问题描述 投票:0回答:1

我创建一个 matlab 持续时间对象并将其保存到 .mat 文件中:

timeend = seconds(123);
save('time.mat', timeend, '-v7.3');

然后我从python中读取它:

with h5py.File('time.mat', 'r') as f:

    var = f['timeend'][:]
    print(list(var))

那么

var
就是一个 np 对象:

[array([3707764736,          2,          1,          1,          1,
                1], dtype=uint32)]

如何将此 numpy 数组转换为 timedelta 对象或以秒为单位的 np.array 时间?

python matlab duration
1个回答
0
投票

您可以轻松处理 numpy 和 txt 文件,而不是处理 h5py 和 mat 文件。

Matlab

例如,我在 Matlab 中创建了一个持续时间数组(H、M、S),并使用提供的

seconds
函数将其转换为秒。

% duration array: 12h, 50m, 24s
hours = 12;
min = 50;
sec = 24;
time = duration(hours, min, sec);

% conversion to seconds
time_sec = seconds(time);

% save variable to ASCII file
save time_sec.txt time_sec -ascii

Python

在Python中,你只需要加载txt文件,用numpy读取它并创建timedelta对象。

from datetime import timedelta
import numpy as np

time_sec = np.take(np.loadtxt("time_sec.txt"),0)

# time_delta object
time_delta = timedelta(seconds=time_sec)
print(time_delta)

结果:

12:50:24

额外

即使使用 Matlab 中的

days
函数,它也能工作:

MATLAB:
time = days(5);
time_sec = seconds(time);
...

PYTHON RESULT:
5 days, 0:00:00

只要可以,就放轻松。

© www.soinside.com 2019 - 2024. All rights reserved.