ÍNDICE


 
ÁLGEBRA LINEAL Y MATRICES
Matrices
   Recordemos que los arrays pueden tener una fila y múltiples columnas (vector fila) o una columna y múltiples filas (vector columna), parece por tanto claro que MATLAB debe permitir trabajar con arrays de múltiples filas y columnas. Efectivamente esto es posible siempre y cuando todas las filas tengan el mismo número de columnas, se obtiene así una configuración rectángular que denominamos matriz.
   La creación de matrices sigue la misma estructura que los vectores fila y columna. Se utilizan comas o espacios para separar elementos de una fila y puntos y comas o pulsando ENTER para separar filas.
 
EDU» A=[1 2 3;4 5 6;7 8 9] 
A = 
   1 2 3
  4 5 6
  7 8 9
EDU» A=[1 3 5 
7 9 11
2 4 6]
A =
  1 3 5
  7 9 11
  2 4 6
EDU» fila1=[1 3 5]
fila1 =
   1 3 5
EDU» B=[fila1;3 4 5;fila1] 
B =
  1 3 5
  3 4 5
  1 3 5
EDU» B=[ fila1 
3 4 5;1 3 5] 
B =
  1 3 5
  3 4 5
  1 3 5

   Todas las operaciones y conceptos analizados para arrays se aplican a matrices, siempre que las dimensiones sean coherentes, en particular podemos sumar matrices de igual dimensión, multiplicar una matriz por un escalar, multiplicar o dividir elemento a elemento dos matrices de igual dimensión usando las operaciones con punto, transponer, ... Observemos que los arrays son casos particulares de matrices.
   Además, podemos realizar otras operaciones propias de matrices como la multiplicación, calculo de inversas, determinantes, rangos, ...  (estos conceptos se estudian en cualquier curso básico de Álgebra Lineal)
 

EDU» A=[1+i 2 i; -i 1-i 2-3i]
A =
   1.0000 + 1.0000i   2.0000                  0 + 1.0000i
        0 - 1.0000i   1.0000 - 1.0000i   2.0000 - 3.0000i
EDU» A.' %Transpuesta
ans =
   1.0000 + 1.0000i        0 - 1.0000i
   2.0000             1.0000 - 1.0000i
        0 + 1.0000i   2.0000 - 3.0000i
EDU» A' %Transpuesta conjugada
ans =
   1.0000 - 1.0000i        0 + 1.0000i
   2.0000             1.0000 + 1.0000i
        0 - 1.0000i   2.0000 + 3.0000i
EDU» B=[1 2 3; 4 5 6; 7 8 0]
B =
     1     2     3
     4     5     6
     7     8     0
EDU» A*B
ans =
   9.0000 + 8.0000i  12.0000 +10.0000i  15.0000 + 3.0000i
  18.0000 -26.0000i  21.0000 -31.0000i   6.0000 - 9.0000i
EDU» det(A) % Determinante
??? Error using ==> det
Matrix must be square.
EDU» det(B) % Determinante
ans =
    27
EDU» inv(B) %Inversa
ans =
   -1.7778    0.8889   -0.1111
    1.5556   -0.7778    0.2222
   -0.1111    0.2222   -0.1111
EDU» rank(B) %rango
ans =
     3
EDU» trace(B) %traza
ans =
     6
EDU» [f,c]=size(B) %dimension
f =
     3
c =
     3
EDU» B^3
ans =
   279   360   306
   684   873   684
   738   900   441

   Podemos encontrar gran número de operadores matriciales consultando la ayuda para matfun.

Manipulación matricial
   MATLAB cuenta con numerosas y potentes maneras de manipular matrices, así, por ejemplo, podremos insertar y extraer subconjuntos de ellas identificando los subíndices de interés.
 
EDU» A=[1 2 3;4 5 6;7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
EDU» A(3,2) %Elemento de la tercera fila y segunda columna
ans =
     8
EDU» A(3,2)=0 %Cambia el elemento anterior a 0
A =
     1     2     3
     4     5     6
     7     0     9
EDU» A(2,5)=7 %Cambia el elemento de la segunda fila y quinta columna a 7
A =
     1     2     3     0     0
     4     5     6     0     7
     7     0     9     0     0
EDU» %Al no tener 5 columnas, la matriz se completa adecuadamente introduciendo ceros
EDU» B=A(3:-1:1,1:3) %Tomamos las filas de A en orden inverso
B =
     7     0     9
     4     5     6
     1     2     3
EDU» B=A(3:-1:1,:) %Igual que antes, aqui : significa tomar todas las columnas
B =
     7     0     9     0     0
     4     5     6     0     7
     1     2     3     0     0
EDU» C=[A B(:,[1 3])] %Añadimos a A todas las filas en la primera y tercera columna de B
C =
     1     2     3     7     9
     4     5     6     4     6
     7     8     9     1     3
EDU» C=[A B(:,1:2:3)] %Igual que antes
C =
     1     2     3     7     9
     4     5     6     4     6
     7     8     9     1     3
EDU» B=[1:2,3:-1:2]
B =
     1     2     3     2
EDU» B=A(1:2,3:-1:2)
B =
     3     2
     6     5
EDU» B=A(:)
B =
     1
     4
     7
     2
     5
     8
     3
     6
     9
EDU» B=A;
EDU» B(:,2)=[1 2 3]'
B =
     1     1     3
     4     2     6
     7     3     9
EDU» B(:,2)=[1 2 3]' %Sustituimos la segunda columna en B
B =
     1     1     3
     4     2     6
     7     3     9
EDU» B(:,2)=[] %Eliminamos la segunda columna en B
B =
     1     3
     4     6
     7     9
EDU» C=B(:,[2 2 2 2]) %Duplicamos 4 veces la segunda columna de B
C =
     3     3     3     3
     6     6     6     6
     9     9     9     9
Matrices especiales
   MATLAB dispone de una serie de matrices especiales, unas de utilidad general y otras de interés en problemas especializados. Entre las matrices de interés general caben destacar

   Matrices nulas
 

EDU» zeros(3)
ans =
     0     0     0
     0     0     0
     0     0     0
EDU» zeros(2,3)
ans =
     0     0     0
     0     0     0

   Matrices de unos
 

EDU» ones(4)
ans =
     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1
EDU» ones(1,4)
ans =
     1     1     1     1

   Matrices aleatorias
 

EDU» rand(2,3) %Número uniformemente distribuidos entre 0 y 1
ans =
    0.9501    0.6068    0.8913
    0.2311    0.4860    0.7621
EDU» randn(2,3) %Números normalmente distribuidos 
ans =
   -0.4326    0.1253   -1.1465
   -1.6656    0.2877    1.1909

   Matrices identidad
 

EDU» eye(4)
ans =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
EDU» eye(3,2)
ans =
     1     0
     0     1
     0     0


ÍNDICE