我目前正在学习神经网络课程,我正在尝试使用 scipy.io.loadmat(filename)
--- 从 Python 加载 .mat
文件,但我不断收到以下错误消息:
ValueError:未知的 mat 文件类型,版本 101、58
当我尝试加载 .m 文件而不是 .mat
文件时出现相同的消息,使用 scipy.io.loadmat()
。
我不知道如何解决这个问题,所以如果这里有人能帮助我,我将不胜感激。
原文由 user177196 发布,翻译遵循 CC BY-SA 4.0 许可协议
(将我的评论转化为答案)
一个
.m
文件是一个 matlab / octave 脚本。您不“加载”脚本。甚至在 matlab/octave 中也不行。您只能运行它,这可能会或可能不会产生一个特定的工作区,然后您可以将其保存到.mat
文件中。有用于 python 的“matlab 接口”,您可以使用它在 python 会话中运行
.m
文件,例如 Python 的官方 MATLAB 引擎 API ,或者如果您有较旧的 matlab 版本,您可以尝试查找其他在线 python matlab 接口(一个简单的谷歌搜索给了我 pymatlab , mlab , mlabwrap 等)。如果您的 .m 文件与八度兼容(并且您安装了八度),您还可以尝试使用已知运行良好的 oct2py 接口。安装这些接口之一后,您可以尝试运行脚本,然后将工作区变量传输到 python,或者使用接口保存到 .mat 文件,然后使用scipy.io.loadmat
将其加载回 python---
和平常一样。至于 .mat 文件给你一个错误,最可能的原因是它是 .mat 规范的更新版本,python 还不能识别(你使用的是什么 matlab 版本?)。尝试在 matlab(或 Octave)中加载 .mat 文件并使用 -v7 选项再次保存它。然后 Python 应该可以毫无问题地打开它。
编辑: 这是一个通过 oct2py 运行八度脚本的示例,将生成的八度工作空间保存到
.mat
文件中,并将.mat
文件加载到 python 中。