जवाबों:
एक आयात की आवश्यकता है, import scipy.io
...
import scipy.io
mat = scipy.io.loadmat('file.mat')
save('myfile.mat','-v7')
न तो scipy.io.savemat
, न ही scipy.io.loadmat
MATLAB सरणियों संस्करण 7.3 के लिए काम करते हैं। लेकिन अच्छा हिस्सा यह है कि MATLAB संस्करण 7.3 फाइलें एचडीएफ 5 डेटासेट हैं। इसलिए उन्हें कई उपकरणों का उपयोग करके पढ़ा जा सकता है, जिसमें NumPy भी शामिल है ।
पायथन के लिए, आपको h5py
एक्सटेंशन की आवश्यकता होगी , जिसके लिए आपके सिस्टम पर HDF5 की आवश्यकता होती है।
import numpy as np
import h5py
f = h5py.File('somefile.mat','r')
data = f.get('data/variable1')
data = np.array(data) # For converting to a NumPy array
save
(कम से कम मतलाब आर २०४ बी में) का उपयोग करके एक फ़ाइल में परिणाम होता है जिसे उपरोक्त तकनीक का उपयोग करके नहीं पढ़ा जा सकता है। यदि आप '-v7.3' ध्वज का उपयोग करते हैं, तो संख्यात्मक डेटा को ठीक पढ़ा जा सकता है।
save('filename', '-v7.3', 'var1');
सबसे पहले .mat फ़ाइल को इस प्रकार सहेजें:
save('test.mat', '-v7')
उसके बाद, पायथन में, सामान्य loadmat
फ़ंक्शन का उपयोग करें :
import scipy.io as sio
test = sio.loadmat('test.mat')
एक अच्छा पैकेज कहा जाता है mat4py
जिसे आसानी से उपयोग करके स्थापित किया जा सकता है
pip install mat4py
यह (वेबसाइट से) उपयोग करने के लिए सीधा है:
MAT-फ़ाइल से डेटा लोड करें
फ़ंक्शन loadmat
केवल पायथन में संग्रहीत सभी चर को एक साधारण पायथन डेटा संरचना में लोड करता है, केवल पायथन dict
और list
वस्तुओं का उपयोग करके । न्यूमेरिक और सेल सरणियों को पंक्ति-क्रमबद्ध नेस्टेड सूचियों में परिवर्तित किया जाता है। सरणियों को केवल एक तत्व के साथ सरणियों को खत्म करने के लिए निचोड़ा जाता है। परिणामी डेटा संरचना सरल प्रकार से बना है जो JSON प्रारूप के साथ संगत है ।
उदाहरण: एक पाय-फाइल को पायथन डेटा संरचना में लोड करें:
from mat4py import loadmat
data = loadmat('datafile.mat')
चर data
एक है dict
चर और मानों मेट-फ़ाइल में निहित है।
एक MAT-फ़ाइल के लिए एक पायथन डेटा संरचना सहेजें
फ़ंक्शन के साथ पायथन डेटा को MAT-फ़ाइल में सहेजा जा सकता है savemat
। डाटा के लिए के रूप में संरचना भी ऐसी ही हो गया है loadmat
, यानी यह सरल डेटा प्रकार, जैसे से बना होना चाहिए dict
, list
, str
, int
, और float
।
उदाहरण: एक MAT-फ़ाइल के लिए एक पायथन डेटा संरचना सहेजें:
from mat4py import savemat
savemat('datafile.mat', data)
पैरामीटर data
एक होगा dict
चर के साथ।
mat4py/cmd.py my.mat
लिखते हैं my.json
, 1 लंबी लाइन।)
mat4py.loadmat.ParseError: Can only read from Matlab level 5 MAT-files
MATLAB 2014 बी या नए स्थापित होने के बाद, पायथन के लिए MATLAB इंजन का उपयोग किया जा सकता है:
import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)
MathWorks द्वारा पायथन के लिए MATLAB इंजन भी है। यदि आपके पास MATLAB है, तो यह विचार करने योग्य हो सकता है (मैंने इसे स्वयं नहीं आज़माया है, लेकिन इसमें केवल MATLAB फ़ाइलों को पढ़ने की तुलना में बहुत अधिक कार्यक्षमता है)। हालांकि, मुझे नहीं पता कि क्या इसे अन्य उपयोगकर्ताओं को वितरित करने की अनुमति है (यह शायद समस्या नहीं है यदि उन व्यक्तियों के पास MATLAB है। अन्यथा, शायद न्यूपीवाई जाने का सही तरीका है?)।
इसके अलावा, यदि आप सभी मूल बातें स्वयं करना चाहते हैं, तो MathWorks फ़ाइल प्रारूप की संरचना पर एक विस्तृत दस्तावेज प्रदान करता है (यदि लिंक बदलता है, तो matfile_format.pdf
इसके लिए या इसके शीर्षक के लिए Google पर प्रयास करें MAT-FILE Format
)। यह उतना जटिल नहीं है जितना मैंने व्यक्तिगत रूप से सोचा था, लेकिन जाहिर है, यह जाने का सबसे आसान तरीका नहीं है। यह इस बात पर भी निर्भर करता है कि .mat
आप किस तरह के -फाइल्स का समर्थन करना चाहते हैं।
मैंने एक "छोटी" (लगभग 700 पंक्तियाँ) पायथन लिपि लिखी है जो कुछ मूल-पाठ पढ़ सकती है .mat
। मैं न तो पायथन विशेषज्ञ हूं और न ही शुरुआत करने वाला हूं और इसे लिखने के लिए मुझे लगभग दो दिन लग गए (ऊपर लिंक किए गए मैथवर्क्स प्रलेखन का उपयोग करके)। मैंने बहुत कुछ नया सीखा है और यह काफी मजेदार था (ज्यादातर समय)। जैसा कि मैंने काम पर पायथन स्क्रिप्ट लिखी है, मुझे डर है कि मैं इसे प्रकाशित नहीं कर सकता ... लेकिन मैं यहां कुछ सलाह दे सकता हूं:
.mat
आप पार्स करना चाहते हैं।miCOMPRESSED
, miMATRIX
, mxDOUBLE
, या miINT32
).mat
-Files 'संरचना एक पेड़ डेटा संरचना में डेटा तत्वों को बचाने के लिए इष्टतम है; प्रत्येक नोड में एक वर्ग और उप-नोड्स होते हैंfrom os.path import dirname, join as pjoin
import scipy.io as sio
data_dir = pjoin(dirname(sio.__file__), 'matlab', 'tests', 'data')
mat_fname = pjoin(data_dir, 'testdouble_7.4_GLNX86.mat')
mat_contents = sio.loadmat(mat_fname)
आप पायथन में डिफ़ॉल्ट सहेजी गई .mat फ़ाइल को पढ़ने के लिए उपरोक्त कोड का उपयोग कर सकते हैं।