পাইথনে বাইনারি এমএটিএলবি। ম্যাট ফাইলগুলি পড়া কি সম্ভব?
আমি দেখেছি যে সায়পাই .mat ফাইলগুলি পড়ার জন্য সমর্থন দাবি করেছে, তবে আমি এটির সাথে ব্যর্থ। আমি সাইপাই সংস্করণ 0.7.0 ইনস্টল করেছি এবং আমি loadmat()
পদ্ধতিটি খুঁজে পাচ্ছি না ।
পাইথনে বাইনারি এমএটিএলবি। ম্যাট ফাইলগুলি পড়া কি সম্ভব?
আমি দেখেছি যে সায়পাই .mat ফাইলগুলি পড়ার জন্য সমর্থন দাবি করেছে, তবে আমি এটির সাথে ব্যর্থ। আমি সাইপাই সংস্করণ 0.7.0 ইনস্টল করেছি এবং আমি loadmat()
পদ্ধতিটি খুঁজে পাচ্ছি না ।
উত্তর:
একটি আমদানি প্রয়োজন, import scipy.io
...
import scipy.io
mat = scipy.io.loadmat('file.mat')
save('myfile.mat','-v7')
না ম্যাটল্যাব অ্যারে সংস্করণ 7.3 এর জন্য কাজ করবে scipy.io.savemat
না scipy.io.loadmat
। তবে ভাল অংশটি হ'ল ম্যাটল্যাব সংস্করণ 7.3 ফাইলগুলি এইচডিএফ 5 ডেটাসেট। সুতরাং সেগুলি NumPy সহ বেশ কয়েকটি সরঞ্জাম ব্যবহার করে পড়া যায় ।
পাইথনের জন্য, আপনাকে h5py
এক্সটেনশনটির প্রয়োজন হবে , আপনার সিস্টেমে এইচডিএফ 5 প্রয়োজন requires
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
(অন্তত মতলব আর -2014 বি) ব্যবহার করার ফলে উপরের কৌশলটি ব্যবহার করে পড়া যায় না এমন একটি ফলের ফলাফল। আপনি যদি '-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
এটি ব্যবহার করা সোজা (ওয়েবসাইট থেকে):
একটি এমএটি-ফাইল থেকে ডেটা লোড করুন
ফাংশনটি loadmat
এমএটি-ফাইলটিতে সঞ্চিত সমস্ত ভেরিয়েবলগুলি কেবল পাইথন dict
এবং list
অবজেক্ট ব্যবহার করে একটি সাধারণ পাইথন ডেটা স্ট্রাকচারে লোড করে। সংখ্যা এবং সেল অ্যারেগুলি সারি-আদেশযুক্ত নেস্টেড তালিকায় রূপান্তরিত হয়। অ্যারেগুলি কেবল একটি উপাদান দিয়ে অ্যারেগুলি মুছে ফেলার জন্য আটকানো হয়। ফলস্বরূপ ডেটা কাঠামো সরল প্রকারের সমন্বয়ে গঠিত যা JSON ফর্ম্যাটের সাথে সামঞ্জস্যপূর্ণ ।
উদাহরণ: পাইথন ডেটা স্ট্রাকচারে একটি এমএটি-ফাইল লোড করুন:
from mat4py import loadmat
data = loadmat('datafile.mat')
ভেরিয়েবল data
হ'ল dict
ম্যাট-ফাইলে থাকা ভেরিয়েবল এবং মান সহ।
একটি পাইথন ডেটা কাঠামো একটি এমএটি-ফাইলে সংরক্ষণ করুন
পাইথন ডেটা ফাংশন সহ একটি এমএটি-ফাইলে সংরক্ষণ করা যায় savemat
। ডেটা হিসাবে জন্য একই ভাবে গঠিত হবে loadmat
, IE এটা সহজ ধরনের তথ্য, মত গঠিত হবে dict
, list
, str
, int
, এবং float
।
উদাহরণ: একটি ম্যাথ-ফাইলে পাইথন ডেটা কাঠামো সংরক্ষণ করুন:
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
ম্যাটল্যাব 2014 বি বা আরও নতুন ইনস্টল থাকা, পাইথনের জন্য ম্যাটল্যাব ইঞ্জিনটি ব্যবহার করা যেতে পারে:
import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)
রয়েছে পাইথন জন্য ম্যাটল্যাব ইঞ্জিন MathWorks নিজে। আপনার যদি ম্যাটল্যাব থাকে তবে এটি বিবেচনা করার মতো হতে পারে (আমি নিজে এটি চেষ্টা করি নি তবে এটি কেবল ম্যাটল্যাব ফাইলগুলি পড়ার চেয়ে অনেক বেশি কার্যকারিতা রয়েছে)। তবে, আমি জানি না এটি অন্য ব্যবহারকারীর কাছে বিতরণ করার অনুমতি দেওয়া হয়েছে কিনা (যদি সেই ব্যক্তিদের ম্যাটল্যাব থাকে তবে এটি সম্ভবত কোনও সমস্যা নয় Otherwise অন্যথায়, সম্ভবত নুমপি যাওয়ার সঠিক উপায়?)।
এছাড়াও, আপনি যদি সমস্ত বুনিয়াদি নিজেই করতে চান তবে ম্যাথ ওয়ার্কস (যদি লিঙ্কটি পরিবর্তন হয় তবে গুগল করার চেষ্টা করুন matfile_format.pdf
বা এর শিরোনামটি 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 ফাইলটি পড়তে আপনি উপরের কোডটি ব্যবহার করতে পারেন।