无法运行正在使用scipy读取MAT文件的pykalma示例代码

无法运行正在使用scipy读取MAT文件的pykalma示例代码,scipy,Scipy,下面是pykalman示例用于加载matlab文件robot.mat的代码行。但是,它抛出了一个错误,消息为ValueError:Unknown mat file type,version 100、110。 我不熟悉用Python阅读matlab文件。有人能帮我确切地了解它的预期版本以及如何绕过这个问题吗 data = io.loadmat(join(module_path, 'data', 'robot.mat')) Traceback (most recent call last): F

下面是pykalman示例用于加载matlab文件robot.mat的代码行。但是,它抛出了一个错误,消息为ValueError:Unknown mat file type,version 100、110。

我不熟悉用Python阅读matlab文件。有人能帮我确切地了解它的预期版本以及如何绕过这个问题吗

data = io.loadmat(join(module_path, 'data', 'robot.mat'))


Traceback (most recent call last):
File "C:\ProgramData\Anaconda2\lib\site-
packages\IPython\core\interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-4-0439d709929f>", line 1, in <module>
data = load_robot()
File "C:\ProgramData\Anaconda2\lib\site-packages\pykalman\datasets\base.py", 
line 45, in load_robot
data = io.loadmat(join(module_path, 'data', 'robot.mat'))
File "C:\ProgramData\Anaconda2\lib\site-packages\scipy\io\matlab\mio.py", 
line 135, in loadmat
MR = mat_reader_factory(file_name, appendmat, **kwargs)
File "C:\ProgramData\Anaconda2\lib\site-packages\scipy\io\matlab\mio.py", 
line 59, in mat_reader_factory
mjv, mnv = get_matfile_version(byte_stream)
File "C:\ProgramData\Anaconda2\lib\site-
packages\scipy\io\matlab\miobase.py", 
line 241, in get_matfile_version
raise ValueError('Unknown mat file type, version %s, %s' % ret)

ValueError: Unknown mat file type, version 100, 110
data=io.loadmat(连接(模块路径,'data','robot.mat'))
回溯(最近一次呼叫最后一次):
文件“C:\ProgramData\Anaconda2\lib\site-
packages\IPython\core\interactiveshell.py”,第2881行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第1行,在
数据=加载机器人()
文件“C:\ProgramData\Anaconda2\lib\site packages\pykalman\datasets\base.py”,
第45行,装载机器人
data=io.loadmat(连接(模块路径,'data','robot.mat'))
文件“C:\ProgramData\Anaconda2\lib\site packages\scipy\io\matlab\mio.py”,
第135行,在loadmat中
MR=mat_读取器_工厂(文件名,附录,**kwargs)
文件“C:\ProgramData\Anaconda2\lib\site packages\scipy\io\matlab\mio.py”,
第59行,在mat_reader_工厂
mjv,mnv=获取matfile版本(字节流)
文件“C:\ProgramData\Anaconda2\lib\site-
packages\scipy\io\matlab\miobase.py“,
第241行,在get_matfile_版本中
raise VALUERROR('未知的mat文件类型,版本%s,%s'%ret)
ValueError:未知的mat文件类型,版本100110
我在这里猜测(并在hpaulj的优秀概述中增加了一个想法):

首先,我手动检查了文件,在编辑器中打开的内容如下:

MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Tue Jun 26 00:59:04 2012
...
因此,scipy应该没有问题(如果mat文件实际上在这个“头”之后)

现在看来,与最相关的beeing项目存在一些未决问题:

    • (不要对不同的eror值感到太惊讶,因为当坏IO完成时,我可能会想到这样不确定的东西)
  • 以及:

因此,此数据集似乎没有随pip自动安装而来,这看起来像是您的问题,应该很容易处理(手动获取数据!)。它还与hpaulj对奇怪错误的疑惑相一致(人们可能会争论是否没有更好的错误处理方法)。

scipy.io.loadmat
可以通过
-v7
读取使用MATLAB
-v4
编写的文件。更高的数字使用
HDF5
,可以使用
h5py
读取(需要更多的知识)。那些
100、110
数字是一个谜。我手动安装的文件来自于此文件,看起来与此文件不符-在另一台计算机上有相同的错误。@user1559897我可以从您的链接打开该文件,没有任何问题(手动下载,scipy 0.19.0,尽管我认为这不重要)。因此,请尝试脑海中出现的最简单的代码(将该文件放入cd文件夹,打开python shell并使用loadmat)。如果这不起作用,你应该用更多信息打开一个新问题。