में कनवर्ट करना मैंने अभी मैटलैब से पायथन 2.7 तक आगे बढ़ना शुरू किया और मुझे अपनी .mat-files पढ़ने में कुछ परेशानी है। मैटलैब के डेटनम प्रारूप में समय की जानकारी संग्रहीत की जाती है। उन लोगों के लिए जो इससे परिचित नहीं हैं:मैटलैब के डेटनम प्रारूप को पाइथन
एक धारावाहिक दिनांक संख्या एक कैलेंडर तिथि को निर्धारित दिनांक तिथि के बाद पारित दिनों की संख्या के रूप में दर्शाती है। MATLAB में, धारावाहिक दिनांक संख्या 1 जनवरी 1, 0000 है।
MATLAB मध्यरात्रि से शुरू होने वाले दिनों के अंशों का प्रतिनिधित्व करने के लिए धारावाहिक समय का भी उपयोग करता है; उदाहरण के लिए, 6 पीएम 0.75 सीरियल दिनों के बराबर है। इसलिए MATLAB में '31-ऑक्टो-2003, 6:00 अपराह्न 'स्ट्रिंग दिनांक संख्या 731885.75 है।
(मैटलैब प्रलेखन से लिया)
मैं अजगर समय प्रारूप में बदलने के लिए करना चाहते हैं और मैं this tutorial पाया। संक्षेप में, लेखक कहा गया है कि
आप पार्स यदि यह अजगर का उपयोग
datetime.fromordinal(731965.04835648148)
तो परिणाम लग सकता है उचित [...]
(किसी भी आगे रूपांतरण से पहले), जिसके लिए काम नहीं करता है मुझे, के बाद से datetime.fromordinal एक पूर्णांक उम्मीद:
>>> datetime.fromordinal(731965.04835648148)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: integer argument expected, got float
जबकि मैं सिर्फ उन्हें दौर दैनिक डेटा के लिए नीचे, मैं वास्तव में प्रतिमिनट समय श्रृंखला आयात करने की आवश्यकता सकता है। क्या किसी को इस समस्या का समाधान है? मैं अपनी .mat फ़ाइलों को दोबारा सुधारने से बचना चाहता हूं क्योंकि उनमें से बहुत से हैं और मेरे सहयोगियों को भी उनके साथ काम करने की ज़रूरत है।
यदि यह मदद करता है, someone else asked for the other way round। अफसोस की बात है, मैं वास्तव में समझने के लिए पाइथन के लिए बहुत नया हूं कि वहां क्या हो रहा है।
/संपादित करें (2012-11-01): यह ऊपर पोस्ट किए गए ट्यूटोरियल में तय किया गया है।
मैं 'यह' fromordinal' में खिलाने से पहले एक 'int' को matlab_datenum' परिवर्तित होगी। – Blender
@ ब्लेंडर: आप सही हैं। तय की। – carlosdc
या सरल: 'python_datetime = datetime.fromordinal (int (matlab_datenum) - 366) + timedelta (days = matlab_datenum% 1)' :) –