Ide indeks linier untuk array di matlab adalah satu hal yang penting. Array dalam MATLAB sebenarnya hanyalah sebuah vektor elemen, dirangkai dalam memori. MATLAB memungkinkan Anda menggunakan indeks baris dan kolom, atau indeks linier tunggal. Sebagai contoh,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
Kita dapat melihat urutan elemen disimpan dalam memori dengan membuka gulungan array menjadi vektor.
A(:)
ans =
8
3
4
1
5
9
6
7
2
Seperti yang Anda lihat, elemen ke-8 adalah angka 7. Faktanya, fungsi find mengembalikan hasilnya sebagai indeks linier.
find(A>6)
ans =
1
6
8
Hasilnya adalah, kita dapat mengakses setiap elemen secara bergiliran dari array nd umum menggunakan satu loop. Misalnya, jika kita ingin mengkuadratkan elemen A (ya, saya tahu ada cara yang lebih baik untuk melakukan ini), seseorang dapat melakukan ini:
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
Ada banyak situasi di mana indeks linier lebih berguna. Konversi antara indeks linier dan dua (atau lebih tinggi) dimensi subskrip dilakukan dengan fungsi sub2ind dan ind2sub.
Indeks linier berlaku secara umum untuk semua larik di matlab. Jadi Anda bisa menggunakannya pada struktur, array sel, dll. Satu-satunya masalah dengan indeks linier adalah ketika indeks terlalu besar. MATLAB menggunakan integer 32 bit untuk menyimpan indeks ini. Jadi jika array Anda memiliki lebih dari total 2 ^ 32 elemen di dalamnya, indeks linier akan gagal. Ini benar-benar hanya menjadi masalah jika Anda sering menggunakan matriks renggang, padahal terkadang hal ini akan menyebabkan masalah. (Meskipun saya tidak menggunakan rilis MATLAB 64 bit, saya percaya bahwa masalah tersebut telah diselesaikan untuk orang-orang yang beruntung yang melakukannya.)