Idea liniowego indeksu dla tablic w Matlabie jest ważna. Tablica w MATLABie jest w rzeczywistości wektorem elementów ułożonych w pamięci. MATLAB pozwala na użycie indeksu wierszy i kolumn lub pojedynczego indeksu liniowego. Na przykład,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
Możemy zobaczyć kolejność elementów przechowywanych w pamięci, rozwijając tablicę do wektora.
A(:)
ans =
8
3
4
1
5
9
6
7
2
Jak widać, ósmy element to liczba 7. W rzeczywistości funkcja find zwraca swoje wyniki jako indeks liniowy.
find(A>6)
ans =
1
6
8
W rezultacie możemy uzyskać dostęp do każdego elementu po kolei z ogólnej tablicy nd za pomocą pojedynczej pętli. Na przykład, gdybyśmy chcieli podnieść do kwadratu elementy A (tak, wiem, że są na to lepsze sposoby), można to zrobić:
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
Istnieje wiele okoliczności, w których wskaźnik liniowy jest bardziej przydatny. Konwersja między indeksem liniowym a dwoma (lub wyższymi) wymiarowymi indeksami dolnymi odbywa się za pomocą funkcji sub2ind i ind2sub.
Indeks liniowy ma zastosowanie ogólnie do dowolnej tablicy w programie MATLAB. Możesz więc używać go na strukturach, tablicach komórek itp. Jedyny problem z indeksem liniowym polega na tym, że stają się zbyt duże. MATLAB używa 32-bitowej liczby całkowitej do przechowywania tych indeksów. Więc jeśli twoja tablica ma więcej niż łącznie 2 ^ 32 elementów, indeks liniowy zawiedzie. Tak naprawdę jest to problem tylko wtedy, gdy często używasz rzadkich macierzy, gdy czasami powoduje to problem. (Chociaż nie używam 64-bitowej wersji MATLAB, uważam, że problem został rozwiązany dla tych szczęśliwców, którzy to robią.)