如何将MATLAB datetime数组导入Python并获取预期时间戳?
解决MATLAB Datetime数组导入Python的不一致问题
MATLAB的datetime对象在.mat文件中是以结构体形式存储的,scipy.io.loadmat无法直接将其映射为Python的时间对象,导致读取结果与MATLAB显示差异巨大。以下是可行的解决方法:
方法1:解析scipy读取的结构体数据
1. 读取.mat文件
import scipy.io import numpy as np import pandas as pd # 替换为你的.mat文件路径 mat_data = scipy.io.loadmat("your_datetime_file.mat") # 替换为MATLAB中datetime数组的变量名 mat_dt_struct = mat_data["your_time_variable"]
2. 提取时间分量并转换
MATLAB datetime结构体包含Year、Month、Day、Hour、Minute、Second等字段,提取后组合为Python可识别的时间格式:
# 展平scipy读取的二维数组分量 years = mat_dt_struct["Year"][0, 0].flatten() months = mat_dt_struct["Month"][0, 0].flatten() days = mat_dt_struct["Day"][0, 0].flatten() hours = mat_dt_struct["Hour"][0, 0].flatten() minutes = mat_dt_struct["Minute"][0, 0].flatten() seconds = mat_dt_struct["Second"][0, 0].flatten() # 生成numpy datetime64数组 python_dt_array = np.array( [f"{y}-{m:02d}-{d:02d} {h:02d}:{mi:02d}:{s:06.3f}" for y, m, d, h, mi, s in zip(years, months, days, hours, minutes, seconds)], dtype="datetime64[ns]" )
方法2:使用mat73库直接读取(推荐)
若你的.mat文件是MATLAB R2019b及以上版本保存的,mat73库可以直接解析MATLAB datetime为Python的datetime64数组,无需手动解析:
# 先安装库:pip install mat73 import mat73 data = mat73.loadmat("your_datetime_file.mat") python_dt_array = data["your_time_variable"] # 直接得到与MATLAB一致的时间数组
验证转换结果
打印前几个元素对比MATLAB中的显示:
print(python_dt_array[:5])
内容的提问来源于stack exchange,提问作者Shivam Mishra
相关产品推荐
相关产品推荐

