2016-10-13 104 views
0

我想從Python運行一個Matlab運行Simulink模式的腳本,將一個變量保存爲Power.mat並在Python中讀取此變量。我在Windows上使用Python 2.7。從python加載.mat文件

我試圖使用該庫hdf5storage讀取文件:

import hdf5storage 
x=hdf5storage.loadmat('Power.mat','r') 

,但我得到附加的誤差。 error

這可能是問題所在? 我也試過圖書館h5py,但我得到了同樣的錯誤。 文件.mat似乎沒有被破壞,因爲我打開它沒有任何問題在Matlab中。

謝謝!

+0

這是相關的? http://stackoverflow.com/questions/31287744/corrupt-files-when-creating-hdf5-files-without-closing-them-h5py – cdarke

+0

'x = hdf5storage.loadmat('Power.mat')'應該工作,雖然它需要永遠下載必要的軟件包來測試它:) –

+1

您是否將'Power.mat'保存爲7.3 MAT文件?以前的版本不是HDF5。從MATLAB:'type('Power.mat')'會告訴你MAT文件的版本。使用'save('Power.mat','-v7.3')'指定版本。 – smn

回答

2

您可以使用scipy.io在Python和Matlab之間交換數據。爲此,有一些名爲savemat和loadmat的函數。

像這樣的東西應該工作:

import scipy.io 
mat = scipy.io.loadmat('Power.mat') 

僅供參考,http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html

+1

有四種不同的'.mat'文件格式。前三個「v4」,「v6」和「v7」是專有的二進制格式。這些是scipy可以打開的。最後一個'v7.3'是一個專門的hdf5文件。這就是'hdf5storage'可以打開的。從技術上講,它可以通過任何可以處理hdf5文件的東西打開,但hdf5storage有一些工具可以正常處理MATLAB特定的位。否則,你會得到一個相當醜陋的(但仍然最終可用)輸出。 – TheBlackCat

0

試試這個代碼:

import h5py 
Data = h5py.File('File.mat')