2011-02-18 19 views
6

a= struct('a1',{1,2,3},'a2',{4,5,6})एक्सेस स्ट्रक्चर डेटा (मैटलैब)

1 का मूल्य कैसे प्राप्त कर सकता है;

मैं a.a1 उपयोग करने के लिए {1} जो त्रुटियों

>> a.a1{1} 
??? Field reference for multiple structure elements that is followed by more reference blocks is an 
error. 

मैं कैसे उपयोग कर सकते हैं 1 लौटने की कोशिश? धन्यवाद।

संपादित A = struct{'a1',[1 2 3],'a2',[4 5 6]}

मैं कैसे 1. मैं A(1).a1 का उपयोग उपयोग कर सकते हैं, लेकिन मैं 1 2 3

उत्तर

13

मिल आप इस के बजाय क्या करना है: क्यों वजह से है कारण

a(1).a1 

कोड जो आप अपनी संरचना बनाने के लिए उपयोग करते हैं वास्तव में एक 3-तत्व संरचना सरणी बनाता है जहां पहले सरणी तत्व मेंहोता हैऔर a2: 4, दूसरे सरणी तत्व में a1: 2 और a2: 5 शामिल हैं, और तीसरे सरणी तत्व में a1: 3 और a2: 6 शामिल हैं।

जब आप घुंघराले ब्रेसिज़पर कॉल करते हैं तो STRUCT पर कॉल करने के लिए, MATLAB मानता है कि आप एक संरचना सरणी बनाना चाहते हैं जिसमें आप संरचना सरणी तत्वों में सेल्स की सामग्री वितरित करते हैं। आप के बजाय एक भी 1-दर-1 संरचना तत्व जहां क्षेत्रों सेल सरणियों शामिल बनाना चाहते हैं, तो आप अपने सेल सरणियों enclosing घुंघराले ब्रेसिज़ का एक अतिरिक्त सेट जोड़ने के लिए है, इसलिए की तरह है:

a = struct('a1',{{1,2,3}},'a2',{{4,5,6}}); 

फिर उसे अपने मूल a.a1{1} काम करेगा।

संपादित करें:

आप सेल सरणियों के बजाय संख्यात्मक सरणियों, इसलिए की तरह का उपयोग कर अपने संरचना बनाते हैं:

A = struct('a1',[1 2 3],'a2',[4 5 6]); 

तो इस प्रकार आप 1 का मान पहुँच सकते हैं:

A.a1(1) 

MATLAB में संरचनाओं के साथ काम करने के बारे में अधिक जानकारी के लिए, this documentation page देखें।

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