2017-07-19 21 views
2

以下是pykalman示例用於加載matlab文件robot.mat的代碼行。然而,它正在拋出一個錯誤信息ValueError:未知的mat文件類型,版本100,110。無法運行使用scipy讀取MAT文件的pykalma示例代碼

我是新來閱讀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 
+1

'scipy.io.loadmat'可以通過'-v7'讀取使用MATLAB'-v4'編寫的文件。較高的數字使用'HDF5',可以用'h5py'讀取(需要更多的知識)。那些100,110號碼是一個謎。 – hpaulj

回答

2

我猜這裏(和再增加一個想法hpaulj的很好的概述):

首先我手動檢查的文件開放在編輯器中讀取爲:

MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Tue Jun 26 00:59:04 2012 
... 

因此關於scipy應該沒有問題(如果mat-file實際上是在跟隨這個「標題」)。

現在看來還有一些懸而未決的問題與該項目最相關的beeing:

所以它看起來這個數據集不會自動安裝pip-install,這看起來像你的問題,應該很容易處理(手動獲取數據!)。它也與hpaulj對這個奇怪的錯誤感到奇怪(可能會爭辯是否沒有更好的錯誤處理可能)。

+0

我手動安裝的文件來自https://github.com/pykalman/pykalman/tree/master/pykalman/datasets/data看起來像是這個文件關閉了 - 與另一臺計算機有相同的錯誤。 – user1559897

+0

@ user1559897 **我可以從你的鏈接打開該文件沒有任何問題**(手動下載,scipy 0.19.0,雖然我不認爲這很重要)。因此,請嘗試記住最簡單的代碼(cd到該文件的文件夾,打開python-shell並使用loadmat)。如果這不起作用,你應該用更多的信息開一個新的問題。 – sascha

+0

只是再次檢查。問題解決了。謝謝! – user1559897