You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取MATLAB timeseries格式.mat文件失败求解决方案

解决Python读取MATLAB timeseries类型.mat文件的问题

问题背景

使用scipy.io.loadmat读取普通.mat数据时能正常获取数值,但读取包含MATLAB timeseries类型的文件时,得到的是MatlabOpaque对象,无法直接提取时间序列的数值数据。

解决方案

方法1:先在MATLAB中转存为普通数组

如果能访问MATLAB,这是最直接的方式:

% 加载原timeseries文件
ts_data = load('assets/timeseries_data.mat');
% 提取timeseries的核心数据和时间向量
raw_data = ts_data.test2.Data;
time_vector = ts_data.test2.Time;
% 保存为普通.mat文件
save('assets/converted_timeseries.mat', 'raw_data', 'time_vector');

之后在Python中用scipy.io.loadmat读取转换后的文件,就能像读取普通数据一样直接获取数组:

import scipy.io
import numpy as np

mat_data = scipy.io.loadmat('assets/converted_timeseries.mat')
print(mat_data['raw_data'])
print(mat_data['time_vector'])

方法2:使用mat4py库直接解析

mat4py对MATLAB的timeseries类型有原生支持,无需提前转换:

  1. 安装库:
pip install mat4py
  1. 读取代码:
from mat4py import loadmat

mat_data = loadmat('assets/timeseries_data.mat')
# 提取timeseries的数据和时间(变量名对应MATLAB中的timeseries名称,这里是test2)
timeseries_data = mat_data['test2']['Data']
timeseries_time = mat_data['test2']['Time']

print(timeseries_data)
print(timeseries_time)

方法3:用h5py读取HDF5格式的.mat文件

如果你的.mat文件是MATLAB 7.3及以上版本(HDF5格式),可以用h5py直接访问内部结构:

  1. 安装库:
pip install h5py
  1. 读取代码:
import h5py

with h5py.File('assets/timeseries_data.mat', 'r') as f:
    # 查看文件内的所有键,确认timeseries的路径
    print("文件内的键:", list(f.keys()))
    # 提取数据和时间(路径需根据实际结构调整)
    data = f['test2']['Data'][()]
    time = f['test2']['Time'][()]
    # MATLAB是列优先,转置后符合Python的数组习惯
    data = data.T
    time = time.T

print(data)
print(time)

说明

scipy.io.loadmat对MATLAB的MCOS(MATLAB类对象)支持有限,会将timeseries这类对象转为MatlabOpaque,无法直接解析内部数据,因此需要借助上述方法处理。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:06:24