2011-02-25 20 views
5

उसी इनपुट संरचना के लिए, क्या फ़ील्डनाम हमेशा अलग-अलग कंप्यूटरों, विभिन्न ओएस और विभिन्न MATLAB संस्करणों पर भी एक ही सेल सरणी वापस कर देगा? या क्या यह फ़ील्ड नामों को अलग-अलग आदेश दे सकता है? उदा .:MATLAB: फ़ील्डनाम के आदेश को परिभाषित किया गया है?

myStructure = load myStructure; 
x = fieldnames(myStructure); 

% days later, diff computer, diff OS, and diff version of MATLAB... 
y = fieldnames(myStructure); 
x == y %? 

documentation for fieldnames वादा है कि एक ही क्रम हर बार दिया जाता है प्रतीत नहीं होता। लेकिन दूसरी ओर, orderfields का अस्तित्व यह इंगित करता है कि फ़ील्ड नाम अनुमानित रूप से एक अंतर्निहित, सामान्य रूप से अपरिवर्तनीय आदेश देता है।

उत्तर

8

मुझे विश्वास है कि संरचना फ़ील्ड को बनाए गए आदेश के अनुसार आदेश दिया जाता है। यदि आप संरचना को मैट-फ़ाइल में सहेजते हैं और बाद में इसे अन्य MATLAB के साथ खोलते हैं, तो ऑर्डर रखा जाएगा। आप हमेशा ORDERFIELDS फ़ंक्शन वाले फ़ील्ड को पुन: व्यवस्थित कर सकते हैं। आप कई अलग-अलग तरीकों से क्रमबद्ध कर सकते हैं (वर्णक्रमानुसार क्रमबद्ध करें, सेल सरणी, अन्य संरचना या क्रमपरिवर्तन वेक्टर का उपयोग करके), अधिक जानकारी के लिए दस्तावेज़ देखें।

वैसे, फ़ील्ड ऑर्डर संरचना तुलना को प्रभावित नहीं करता है।

s1 = struct('a',0,'b',1) 

s1 = 

    a: 0 
    b: 1 

s2 = struct('b',1,'a',0) 

s2 = 

    b: 1 
    a: 0 

isequal(s1,s2) 

ans = 

    1 

s1=orderfields(s1,s2) 

s1 = 

    b: 1 
    a: 0 

अद्यतन:

यहाँ "लिस्टिंग एक संरचना के क्षेत्र 'के तहत structure data type के लिए MATLAB प्रलेखन से उद्धरण है उपशीर्षक:

क्षेत्रों में दिखाई देते हैं आदेश जिसमें वे बनाए गए थे।

आशा है कि यह आपके प्रश्न का उत्तर देगा।

+1

ध्यान दें कि structs की सरणी के तत्वों को निर्दिष्ट करते समय फ़ील्ड ऑर्डर महत्वपूर्ण है। – Jonas

+0

धन्यवाद। मैं बस अपरिभाषित व्यवहार पर भरोसा नहीं करना चाहता हूं। क्या आप दस्तावेज़ीकरण में कहीं भी जानते हैं जो बताता है कि फ़ील्ड नाम फ़ील्ड नामों को क्रम में वापस करने का वादा करता है? अर्थात। यह वादा करता है कि यदि मैं फ़ील्ड को एक निश्चित क्रम में सेट करता हूं, तो मैं उन्हें उस क्रम में वापस ले जाऊंगा? – AlcubierreDrive

+0

मैंने एक उद्धरण के साथ उत्तर अद्यतन किया। – yuk

संबंधित मुद्दे