sexta-feira, 16 de maio de 2014

Os chamados "subscripts" no Matlab

Os "subsripts" são muito importantes para localizar as células de uma matriz de dados e, também, para se poder fazer operações matemáticas utilizando células específicas da nossa matriz. É preciso ter em mente que a regra no Matlab para localizar um elemento (ou célula) de uma matriz é a seguinte: A(i,j) em que i simboliza a linha e j a coluna. Assim, considerando a nossa matriz "magic square", qual será o número inscrito na posição A(4,2)? Vamos recordar a matriz mágica A:


Respeitando a regra acima descrita facilmente se deduz que a célula procurada se encontra na linha 4 e na coluna 2, ou seja, trata-se da célula que tem o valor 15. 
E se quisermos somar todos os valores de uma coluna usando esta notação? Faz-se assim:
A(1,4) + A(2,4) + A (3,4) + A (4,4) = 34. Estamos aqui a somar todos os valores de uma coluna (a 4.ª) e como se trata de uma matriz mágica o valor 34 será sempre igual independentemente da linha, coluna ou diagonal que escolhermos!
Mas o Matlab está cheio de surpresas, e neste campo existe uma forma mais elegante de localizar células específicas usando uma notação muito mais simplificada. O Matlab considera que as células de uma matriz são ordenadas por números inteiros crescentes seguindo coluna a coluna, da esquerda para a direita, isto é:

  
1 5 9
2 6 10
3 7 11
4 8 12

Assim, a matriz mágica pode ser considerada como um vector coluna de grande dimensão "one long column vector". A posição A (4,2) será então equivalente, na nova notação, a A (8) .

Podemos também acrescentar uma nova coluna seguindo qualquer uma das notações anteriormente descritas:

X=A
X (4,5) =17 de reparar que não existe a 5.ª coluna na nossa matriz mágica de 4x4, mas o Matlab cria esta coluna preenchendo com zeros todas as células que não correspondem às coordenadas (4,5) e colocando 17 nessa posição:

 X(4,5)=17

X =

    16     2     3    13     0
     5    11    10     8     0
     9     7     6    12     0
     4    14    15     1    17

Se eu quiser usar a notação mais simples e quiser colocar o valor 18 em vez do 17 faço assim:

X(20)=18

X =

    16     2     3    13     0
     5    11    10     8     0
     9     7     6    12     0
     4    14    15     1    18

Tudo é muito simples neste mundo matemático matricial em ambiente Matlab!




Sem comentários: