दिलचस्प पोस्ट
स्क्वायर का पता लगाने वाले वर्ग नहीं मिलते हैं मैच () जब मैं एक मैच की उम्मीद करता हूँ तब दो मैचों में सरणी देता है स्थिर HTML के साथ सामान्य हेडर / पाद लेख IPhone में पॉपअप के रूप में प्रदर्शन UIViewController फिक्स्ड आवरण के साथ बूटस्ट्रैप ग्रिड – स्टैकिंग से स्तंभ रोकें आईफोन पर पोर्टफोलियो में यूआईएसप्लिट वीयूआई कंट्रोलर मास्टर के बजाय वीसी के विस्तार से पता चलता है जावास्क्रिप्ट में एक मैट्रिक्स के कॉलम (ट्रांसेसिटी) के साथ पंक्तियों को स्वैप करें पासवर्ड सत्यापन regex HTML के लिए कस्टम टैग कैसे बनाएं मैं एक पाठ फ़ाइल के एन्कोडिंग / कोडपेज का पता कैसे लगा सकता हूं? System.Web.HttpContext.Current.User.Identity.Name बनाम System.Environment.UserName में ASP.NET SQL सर्वर पर संग्रहीत कार्य की अनुसूचित चलन jQuery AJAX फ़ॉर्म सबमिट करें निर्देशिका में कितनी फाइलें डाल सकती हूं? विंडोज अपडेट ने MVC3 और MVC4 काम करना बंद कर दिया था

मैं मैटलैब में एक संरचना को कैसे परिभाषित करूं

मुझे पता है कि संरचना को कई तरह से परिभाषित किया जा सकता है जैसे कि:

  1. एक चर में फ़ील्ड जोड़ना

    p.color.red = .2; p.color.green = .4; p.color.blue = .7; 
  2. असाइनमेंट द्वारा स्केलर संरचना को परिभाषित करना

     S = struct('a', 0, 'b', 1, 'c', 2); 

मैं क्या करने में सक्षम होना चाहता हूं एक संरचना की परिभाषा (जैसे सी) बनाना है। मेरा अंतिम लक्ष्य उन संरचनाओं की एक सरणी होती है, जिनके माध्यम से मैं पुनरावृत्त हो सकता हूं और पर परीक्षण कर सकता हूं। क्या किसी भी तरह से मैं एक सामान्य संरचना को परिभाषित कर सकता हूं और फिर इसके उदाहरण बना सकता हूं? क्या मुझे कुछ अन्य तंत्र का उपयोग करना चाहिए मुझे पता है मैटलैब जावा का समर्थन करता है, क्या मुझे कक्षा / इंटरफेस का उपयोग करना चाहिए?

वेब के समाधान से एकत्रित समाधान "मैं मैटलैब में एक संरचना को कैसे परिभाषित करूं"

सी के विपरीत, मैटलैब आपको जाने के लिए एक स्ट्रैट से सदस्यों को जोड़ने या निकालने देता है। यह एक सम्मेलन का अधिक है कि कुछ क्षेत्रों के साथ एक स्ट्रेट कुछ कार्यों के साथ प्रयोग किया जा सकता है

तो हां, ये संरचनाओं को बनाने के दो बुनियादी तरीके हैं। बेशक, आप हमेशा * .m फ़ाइल में फ़ंक्शन लिख सकते हैं जो आपके लिए कुछ फ़ील्ड के साथ एक संरचना बनाता है या यदि आप अधिक ओ ओ प्राप्त करना चाहते हैं, तो यहां देखें

आपने अपने लक्ष्य का उल्लेख किया है कि एक ही प्रकार की कई संरचनाओं के साथ काम करना है, इसलिए आपको अपने लिए उपलब्ध मुख्य दो दृष्टिकोणों के बारे में पता होना चाहिए और वे कैसे तुलना करते हैं:

1) संरचनाओं की सरणी

आप गतिशील रूप से सरणी बढ़कर इसे प्रारंभ कर सकते हैं

 p(1).str = 'white'; p(1).r = 1; p(1).g = 1; p(1).b = 1; p(2).str = 'black'; p(2).r = 0; p(2).g = 0; p(2).b = 0; 

हालांकि, सरणी को पूर्व-आवंटित करके शुरू करना बेहतर होता है

 p = repmat( struct('r',[], 'g',[], 'b',[], 'str',[]), 1, 10); 

पूर्व आवंटित करने के लिए एक अन्य चाल:

 p(10) = struct('r',[], 'g',[], 'b',[], 'str',[]); 

या प्रारंभ करने पर सभी मान भी देते हैं:

 p = struct('r',{1 0}, 'g',{1 0}, 'b',{1 0}, 'str',{'white' 'black'}); 

मूल्यों को भरने का एक आसान तरीका

 names = {'white' 'black'}; [p(1:2).str] = names{:}; red = num2cell([1 0]); [p(1:2).r] = red{:}; 

यहां बताया गया है कि आप एक फ़ील्ड के सभी मूल्यों को कैसे प्राप्त करते हैं:

 red = [p(:).r]; names = {p(:).str}; 

2) सरणियों के ढांचे

 pr = [1 0]; pg = [1 0]; pb = [1 0]; p.str = {'white' 'black'}; p1 = [pr(1) pg(1) pb(1)]; 

इसका लाभ यह है कि संरचना बस सूचक की एक सरणी है (आर, जी, बी, एसआर स्मृति में अलग से जमा हो जाती है)। पिछले दृष्टिकोण से इसकी तुलना करें, जहां हमारे पास संरचना की एक सरणी होती है, और प्रत्येक संरचना के क्षेत्र में संकेत मिलता है (काफी स्मृति ओवरहेड है):

 >> s1 = repmat( struct('r',0, 'g',0, 'b',0), 1, 1000); >> s2 = struct('r',zeros(1,1000), 'g',zeros(1,1000), 'b',zeros(1,1000)); >> whos Name Size Bytes Class Attributes s1 1x1000 204192 struct s2 1x1 24372 struct 

दूसरी तरफ, क्योंकि संरचना के प्रत्येक क्षेत्र को अपने स्वयं के एक सरणी के रूप में संग्रहित किया जाता है, इसलिए यह इस तथ्य को लागू करने के लिए है कि उन्हें लंबाई में मिलान करना होगा।

यदि आप इस बारे में और पढ़ना चाहते हैं तो कुछ अन्य पदों:

  • MATLAB मूल बातें: सरणी संरचनाओं के सरंचना बनाम सरंचनाओं के सरंचना
  • संरचना प्रारंभ करना