A ideia de um índice linear para matrizes em matlab é importante. Um array no MATLAB é, na verdade, apenas um vetor de elementos, estendido na memória. O MATLAB permite que você use um índice de linha e coluna ou um único índice linear. Por exemplo,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
Podemos ver a ordem em que os elementos são armazenados na memória, desenrolando o array em um vetor.
A(:)
ans =
8
3
4
1
5
9
6
7
2
Como você pode ver, o 8º elemento é o número 7. Na verdade, a função find retorna seus resultados como um índice linear.
find(A>6)
ans =
1
6
8
O resultado é que podemos acessar cada elemento por vez de uma matriz nd geral usando um único loop. Por exemplo, se quiséssemos elevar ao quadrado os elementos de A (sim, sei que existem maneiras melhores de fazer isso), poderíamos fazer isso:
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
Existem muitas circunstâncias em que o índice linear é mais útil. A conversão entre o índice linear e dois (ou mais) subscritos dimensionais é realizada com as funções sub2ind e ind2sub.
O índice linear se aplica em geral a qualquer array em matlab. Portanto, você pode usá-lo em estruturas, matrizes de células, etc. O único problema com o índice linear é quando eles ficam muito grandes. O MATLAB usa um número inteiro de 32 bits para armazenar esses índices. Portanto, se sua matriz tiver mais do que um total de 2 ^ 32 elementos, o índice linear falhará. É realmente apenas um problema se você usar matrizes esparsas com frequência, quando ocasionalmente isso pode causar um problema. (Embora eu não use uma versão do MATLAB de 64 bits, acredito que o problema foi resolvido para aqueles indivíduos sortudos que usam.)