मतलाब में सरणियों के लिए एक रैखिक सूचकांक का विचार एक महत्वपूर्ण है। MATLAB में एक सरणी वास्तव में तत्वों का एक सदिश है, जो स्मृति में फैला है। MATLAB आपको एक पंक्ति और कॉलम इंडेक्स, या एक एकल रैखिक सूचकांक का उपयोग करने की अनुमति देता है। उदाहरण के लिए,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
हम उस क्रम को देख सकते हैं जिसमें तत्वों को वेक्टर में सरणी को अनियंत्रित करके मेमोरी में संग्रहीत किया जाता है।
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
कई परिस्थितियां हैं जहां रैखिक सूचकांक अधिक उपयोगी है। रैखिक सूचकांक और दो (या उच्चतर) आयामी सब्सक्राइबरों के बीच रूपांतरण उप 2ind और ind2sub फ़ंक्शन के साथ पूरा किया जाता है।
मैटलैब में किसी भी सरणी में सामान्य रूप से रैखिक सूचकांक लागू होता है। तो आप इसे संरचनाओं, सेल सरणियों आदि पर उपयोग कर सकते हैं। रैखिक सूचकांक के साथ एकमात्र समस्या यह है कि जब वे बहुत बड़े हो जाते हैं। MATLAB इन इंडेक्स को स्टोर करने के लिए 32 बिट पूर्णांक का उपयोग करता है। तो अगर आपके सरणी में अधिक है तो इसमें कुल 2 ^ 32 तत्व हैं, रैखिक सूचकांक विफल हो जाएगा। यह वास्तव में केवल एक मुद्दा है यदि आप अक्सर विरल मैट्रिस का उपयोग करते हैं, जब कभी-कभी यह समस्या का कारण होगा। (हालांकि मैं 64 बिट MATLAB रिलीज़ का उपयोग नहीं करता हूं, मेरा मानना है कि समस्या उन भाग्यशाली व्यक्तियों के लिए हल हो गई है जो करते हैं।)