মতলবগুলিতে অ্যারেগুলির জন্য রৈখিক সূচকের ধারণা একটি গুরুত্বপূর্ণ। ম্যাটল্যাবে একটি অ্যারে আসলেই কেবল উপাদানের ভেক্টর, স্মৃতিতে ছড়িয়ে পড়ে। ম্যাটল্যাব আপনাকে একটি সারি এবং কলাম সূচক বা একক রৈখিক সূচক ব্যবহার করতে দেয়। উদাহরণ স্বরূপ,
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
আপনি দেখতে পাচ্ছেন, অষ্টম উপাদানটি সংখ্যা 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
অনেক পরিস্থিতিতে আছে যেখানে লিনিয়ার সূচকটি বেশি কার্যকর। লিনিয়ার সূচক এবং দুটি (বা উচ্চতর) মাত্রিক সাবস্ক্রিপ্টগুলির মধ্যে রূপান্তরটি সাব 2 ইন্ড এবং ইন্ডি 2সুব ফাংশন সহ সম্পন্ন হয়।
লিনিয়ার সূচকটি মাতলাবের যে কোনও অ্যারেতে সাধারণভাবে প্রযোজ্য। সুতরাং আপনি এটি স্ট্রাকচার, সেল অ্যারে ইত্যাদিতে ব্যবহার করতে পারেন লিনিয়ার ইনডেক্সে কেবল তখনই সমস্যা হয় যখন তারা খুব বড় হয়। ম্যাটল্যাব এই সূচকগুলি সংরক্ষণ করতে 32 বিট পূর্ণসংখ্যার ব্যবহার করে। সুতরাং যদি আপনার অ্যারেতে আরও থাকে তবে এতে মোট 2 ^ 32 উপাদান থাকে, লিনিয়ার সূচকটি ব্যর্থ হয়। যদি আপনি প্রায়শই স্পর্স ম্যাট্রিক ব্যবহার করেন এটি সত্যিই কেবল তখনই সমস্যা হয়, যখন মাঝে মাঝে এটি সমস্যার কারণ হয়ে দাঁড়ায়। (যদিও আমি একটি bit৪ বিট ম্যাটল্যাব রিলিজ ব্যবহার করি না, তবে আমি বিশ্বাস করি যে যারা ভাগ্যবান ব্যক্তিদের ক্ষেত্রে সমস্যাটি সমাধান হয়েছে))