"Can only read from Matlab level 5 MAT-files"
"Can only read from Matlab level 5 MAT-files"
我正在尝试使用 mat4py
从 Matlab 将文件加载到我的 python 中。
我有以下错误
ParseError: Unexpected field name length: 43
使用时
import h5py
from numpy import ndarray
data_py = loadmat("data.mat")
我听从了建议
所以,
explore_v73_matfile(file_name="data.mat", fptr=None, path=r"C:/Users/...mypath/data_folder")
data_100E = loadmat("data.mat")
但是,现在我有一个新的错误:
ParseError: Can only read from Matlab level 5 MAT-files
很遗憾,我不能分享 data.mat
。有谁知道如何用我提供的少量信息解决这个问题?
MAT-File Format documentation (PDF) 表示 MAT 文件的最后一个二进制结构是“5 级 MAT 文件”。
This document describes the internal format of MATLAB Level 4 and
Level 5 MAT-files. Level 4 MATfiles are compatible with versions of
MATLAB up to Version 4. Level 5 MAT-files are compatible with MATLAB
Versions 5 and up.
但是loadmat.py
函数在第425-429行的注释中指出(截至2021年3月):
# Check mat file format is version 5
# For 5 format we need to read an integer in the header.
# Bytes 124 through 128 contain a version integer and an
# endian test string
如果您的 MAT 文件不兼容,loadmat.py
会输出错误。
if maj_val != 1:
raise ParseError('Can only read from Matlab level 5 MAT-files')
很可能您的 MAT 文件是很久以前创建的,或者是使用旧的 matlab 版本创建的,无法再使用 mat4py 读取。
您应该尝试使用 matlab 读取您的 MAT 文件并再次保存它们。
我正在尝试使用 mat4py
从 Matlab 将文件加载到我的 python 中。
我有以下错误
ParseError: Unexpected field name length: 43
使用时
import h5py
from numpy import ndarray
data_py = loadmat("data.mat")
我听从了建议
所以,
explore_v73_matfile(file_name="data.mat", fptr=None, path=r"C:/Users/...mypath/data_folder")
data_100E = loadmat("data.mat")
但是,现在我有一个新的错误:
ParseError: Can only read from Matlab level 5 MAT-files
很遗憾,我不能分享 data.mat
。有谁知道如何用我提供的少量信息解决这个问题?
MAT-File Format documentation (PDF) 表示 MAT 文件的最后一个二进制结构是“5 级 MAT 文件”。
This document describes the internal format of MATLAB Level 4 and Level 5 MAT-files. Level 4 MATfiles are compatible with versions of MATLAB up to Version 4. Level 5 MAT-files are compatible with MATLAB Versions 5 and up.
但是loadmat.py
函数在第425-429行的注释中指出(截至2021年3月):
# Check mat file format is version 5 # For 5 format we need to read an integer in the header. # Bytes 124 through 128 contain a version integer and an # endian test string
如果您的 MAT 文件不兼容,loadmat.py
会输出错误。
if maj_val != 1: raise ParseError('Can only read from Matlab level 5 MAT-files')
很可能您的 MAT 文件是很久以前创建的,或者是使用旧的 matlab 版本创建的,无法再使用 mat4py 读取。
您应该尝试使用 matlab 读取您的 MAT 文件并再次保存它们。