मैटलैब में सरणी के लिए रैखिक अनुक्रमणिका का विचार एक महत्वपूर्ण है। MATLAB में एक सरणी वास्तव में तत्वों का एक वेक्टर है, जो स्मृति में बाहर निकलती है। MATLAB आपको या तो पंक्ति और कॉलम अनुक्रमणिका या एकल रैखिक अनुक्रमणिका का उपयोग करने की अनुमति देता है। उदाहरण के लिए,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
हम तत्वों एक वेक्टर में सरणी unrolling द्वारा स्मृति में जमा हो जाती है देख सकते हैं।
A(:)
ans =
8
3
4
1
5
9
6
7
2
जैसा कि आप देख सकते हैं, 8 वें तत्व संख्या 7 है। वास्तव में, फ़ंक्शन एक रैखिक अनुक्रमणिका के रूप में अपने परिणाम लौटाता है।
find(A>6)
ans =
1
6
8
परिणाम यह है कि हम एक एकल लूप का उपयोग करके सामान्य एन-डी सरणी के बदले प्रत्येक तत्व को एक्सेस कर सकते हैं। उदाहरण के लिए, अगर हम (हाँ, मुझे पता है कि बेहतर तरीके यह करने के लिए कर रहे हैं) एक के तत्वों वर्ग चाहता था, एक ऐसा करने दे सकता है:
B = zeros(size(A));
for i = 1:numel(A)
B(i) = A(i).^2;
end
B
B =
64 1 36
9 25 49
16 81 4
कई परिस्थितियों रहे हैं जहां रैखिक सूचकांक अधिक उपयोगी है। रैखिक सूचकांक और दो (या उच्च) आयामी सबस्क्रिप्ट के बीच रूपांतरण sub2ind और ind2sub कार्यों के साथ पूरा किया जाता है।
रैखिक सूचकांक सामान्य रूप से matlab में किसी भी सरणी पर लागू होता है। तो आप इसे संरचनाओं, सेल सरणी आदि पर उपयोग कर सकते हैं। रैखिक सूचकांक के साथ एकमात्र समस्या तब होती है जब वे बहुत बड़े होते हैं। MATLAB इन इंडेक्स को स्टोर करने के लिए 32 बिट पूर्णांक का उपयोग करता है। तो यदि आपके सरणी में कुल 2^32 तत्व हैं, तो रैखिक सूचकांक विफल हो जाएगा। यह वास्तव में केवल एक मुद्दा है यदि आप अक्सर स्पैर मैट्रिक्स का उपयोग करते हैं, जब कभी-कभी इससे कोई समस्या आती है। (हालांकि मैं 64 बिट MATLAB रिलीज का उपयोग नहीं करता, मुझे विश्वास है कि उन भाग्यशाली व्यक्तियों के लिए समस्या हल हो गई है जो करते हैं।)
स्रोत
2009-04-17 03:13:00
मैटलैब शब्दावली नोट: मैटलैब में कोर डेटा प्रकारों की एक छोटी संख्या है। सबसे महत्वपूर्ण हैं: संरचना, मैट्रिक्स, और सेल सरणी। एक मैट्रिक्स के हिस्सों का जिक्र करते समय, "तत्व" शब्द का उपयोग करना आम है, और सेल सेल के हिस्सों को संदर्भित करने के लिए "सेल" शब्द आरक्षित करना है। सेल सरणी और मैट्रिस में कई वाक्य रचनात्मक और अर्थपूर्ण अंतर होते हैं, भले ही दोनों एन-आयामी डेटा संरचनाएं हों। –
नोट किया गया, और बदला गया। धन्यवाद! – rlbond
क्या मैं पूछ सकता हूं कि आपको इसके लिए पुनरावृत्ति की आवश्यकता है? हो सकता है कि इसके बजाय ऐसा करने के लिए "वेक्टरकृत" तरीका हो ... –