Apuntes de MATLAB

Álvaro Bustinduy Candelas







El paquete  MATLAB (MATrix LABoratory) es un entorno interactivo basado en el cálculo de matrices.
En este seminario nos proponemos dar una introducción básica al manejo de este programa.
 


CONTENIDOS



1. ACCESO A MATLAB

Se inicia ejecutando la aplicación MATLAB dentro del entorno que estamos utilizando (en nuestro caso  un PC y un sistema operativo de tipo WINDOWS). A continuación, aparecerá una ventana (que llamamos ventana de órdenes).  Para comunicarse con MATLAB
el usuario debe escribir los datos o  instrucciones (que mostramos en color rojo con letra máquina de escribir) a continuación del símbolo EDU>>.

. Una vez escrito lo que desea el usuario, si se pulsa la tecla de retorno, aparece en color negro la respuesta dada por MATLAB a la instrucción tecleada.


Tengamos en cuenta que :



 

2. OPERACIONES ARITMÉTICAS


En MATLAB se pueden realizar las operaciones aritméticas siguientes:

      +      Sumar
         -            Restar
    *            Multiplicar
                     Dividir
         ^              Elevar a una potencia
 

Cuando los cálculos que se hacen no se asignan a una variable determinada
se asignan por defecto a la variable de respuesta ans.
Ejemplo.

EDU>> 5+3

ans =
 8

En cambio, cuando el cálculo se asigna a una variable en concreto, el resultado queda
guardado en ella.

Ejemplo.

EDU>> x=8+7

x =
15

Si queremos conocer el valor de una variable, es suficiente con escribir su nombre.
Ejemplo.

EDU>> x

x =
15

Cuando añadimos un punto y coma (;) al final de una instrucción, entonces no se muestra la respuesta
en la ventana de órdenes.
Ejemplo.

EDU>> y=6*8;

... pero no por ello deja de realizarse el cálculo.

EDU>> y

y =
48
 

Existe un orden de prioridad en el que se efectúan las operaciones: primero las potencias, después las multiplicaciones y divisiones y, finalmente, las sumas y restas. Las operaciones de igual prioridad se evalúan de izquierda a derecha.
Ejemplos.

EDU>> 2/4*3

ans =
1.5000

EDU>> 2/(4*3)

ans =
0.1667
 


3. VECTORES Y MATRICES


Para definir un vector fila, es suficiente escribir sus coordenadas entre corchetes.
Ejemplo:
 

EDU>> v=[2 4 6]     % Vector de 3 coordenadas

v=
2 4 6

EDU>> w=[1 2 3];
 

El operador ' es el de trasposición (en realidad trasposición y conjugación):

EDU>> w'

ans =
1
2
3

Otra manera muy útil en que podemos declarar vectores con MATLAB es la siguiente:  supongamos que queremos construir un vector tal que la diferencia entre dos cualesquiera de sus coordenas consecutivas sea una cantidad constante, por ejemplo, que la primera sea 0, la última 10  y la distancia entre dos consecutivas sea 2, basta escribir:
 

EDU>> vector1=[0:2:10]
vector1 =
0 2 4 6 8 10

 

Si lo que conocemos del vector es que la primera coordenada vale 0, la última 10 y que tiene 6 en total, escribiremos:
 

EDU>> vector2=linspace(0,10,6)

vector2 =
0 2 4 6 8 10

 

MATLAB permite acceder a partes específicas de un vector con la misma notación que hemos utilizado para crearlos.
Ejemplos.

EDU>> vector2(1:3)   %las tres primeras coordenadas de vector2
ans =
0 2 4

EDU>> vector2(3)     %segunda coordenada de  vector2

ans =
4

EDU>> vector2(1:2:4) %las dos primeras cordenadas impares de vector2
ans =
0 4
 

Casi todos los comandos básicos de MATLAB se resuelven utilizando matrices.
Las matrices 1x1 se ven como escalares y las matrices con una fila o columna se interpretan como vectores. En  MATLAB las matrices se escriben como los vectores, pero separando las filas mediante un punto y coma o un retorno de carro.
Ejemplos.

EDU>> M=[1 2 3;4 5 6;7 8 9] %Asignamos a la variable M una
                            %matriz 3x3 
M =

1 2 3
4 5 6
7 8 9

EDU>> M'                    %Su traspuesta (su adjunta)

ans =
1 4 7
2 5 8
3 6 9

EDU>> N=[7 4 6   %Asignamos a la variable N una matriz 3x3
      3 5 8
      3 9 10]

N =
7 4 6
3 5 8
3 9 10

Otra posibilidad para crear matrices es adjuntar vectores.
Ejemplo.

EDU>> L=[vector1       %Asignamos a la variable L una matriz 2x6
      0 0 0 0 0 1]     %resultado de adjuntar dos vectores

L =
0 2 4 6 8 10
0 0 0 0 0  1

Cada elemento de una matriz (entrada) se identifica
escribiendo el nombre de la matriz y, entre paréntesis, sus respectivos índices:
Ejemplo.

EDU>> L(1,3)  %Elemento en la primera fila y tercera columna de L

ans =
4

También se puede acceder a un fila o columna entera.
Ejemplo.

EDU>> L(:,2)    % Segunda columna de L

ans =
2
0
 

EDU>> L(2,:)    % Su segunda fila de L

ans =
0 0 0 0 0 1
 

Acceder a la matriz como si fuera una columna.
Ejemplo.


EDU>>
L(3:10)   % Las entradas tercera a décima de L como columna

ans =
2 0 4 0 6 0 8 0  

o acceder a cualquiera de sus submatrices


EDU>>
L(1:2,[1 3])   % Submatriz formada por los elementos que

                     % están en las dos primeras filas y en la
ans =                % primera y tercera columnas.
0  4
0  0


Se puede conocer siempre el tamaño de una matriz y la longitud de un vector:

EDU>> size(L) %Dimensiones de la matriz L (número de
              %filas y de columnas) 
ans =
2  6


EDU>>
size(vector1)

             
ans =
1  6


Podemos definir algunas matrices especiales como, por ejemplo, la matriz identidad:

EDU>> eye(3)

ans =
1  0  0  
0  1  0
0  0  1
 
La matriz
cuyas entradas son todas uno:

EDU>>
ones(3)

ans =
1  1  1  
1  1  1
1  1  1


La matriz
cuyas entradas son todas cero:


EDU>> zeros(3)

ans =
0  0  0  
0  0  0
0  0  0



4. OPERACIONES CON MATRICES


En MATLAB se pueden realizar las operaciones siguientes:
      +       Sumar
          -             Restar
    *             Multiplicar
         ^               Elevar a una potencia
    '       Trasponer
   

Para operar dos matrices han de tener tamaño compatible con esa operación.

MATLAB da lugar a a un mensaje de error, por ejemplo si se suman dos matrices no escalares con diferente  número de filas o columnas.
Ejemplos.


EDU>> B=[2 4;6 8];
EDU>> B*[1,2]                 
??? Error using ==> *
Inner matrix dimensions must agree.

EDU>> B*[1,2]'

ans =
10

22

EDU>> C=B'

C =
2  6

4  8

EDU>> 3*(B*C)^4   

ans =
100005888  226068480

226068480  511039488


Una de las características de
MATLAB es que dispone de un gran número de funciones que
actúan sobre un a matriz entrada a entrada. La suma, resta y producto por un escalar se realizan
elemento a elemento, sin embargo, elevar a una potencia, multiplicar y dividir no. Estas operaciones pueden hacerse entrada a entrada anteponiendo un punto al símbolo de la operación
correspondiente: 
.*, ./ y .^ .
Ejemplos.

EDU>> A=[1 3 5; 7 9 11; 13 15 17]; A^3  % Calcula el producto AAA

ans =
 2421   3051   3681
 6255   7857   9459
10089  12663  15237

EDU>> A.^3        % Calcula la potencia cúbica de cada entrada de A                              
ans =
   1    27   125
 343   729  1331
2197  3375  4913



EDU>>  log(A)      % Calcula el logaritmo de cada entrada de A

ans =

0       1.0986  1.6094
1.9459  2.1972  2.3979

2.5649  2.7081  2.8332
      


5. POLINOMIOS


Con MATLAB se puede trabajar con polinomios de forma sencilla. Es suficiente tener en cuenta que un polinomio no es nada más que un vector, en que el orden de los coeficientes va de mayor
a menor grado.
Ejemplos. 


EDU>> p=[3 5 2 8 6]   % 3*x^4+5*x^3+2*x^2+8*x+6

p =
3 5 2 8 6


EDU>> q=[6 2 1 7 8]   % 6*x^4+2*x^3+x^2+7*x+8

q =
6 2 1 7 8

Además,
MATLAB incluye funciones específicas para operar con polinomios. Por ejemplo,
si queremos evaluar lo que vale un polinomio en un punto.
Ejemplo.

EDU>>
polyval(p,-1) 
% Evaluación de 3*x^4+5*x^3+2*x^2+8*x+6 en x=-1

ans =
-2

También es posible multiplicar dos polinomios.
Ejemplo.

EDU>>
conv(p,q) 
% producto de p por q

ans =
1 36 25 78 113 74 78 106 48

O obtener el cociente que se obtiene al dividirlos.

EDU>>
deconv(p,q)
% cociente resultado de dividir p entre q
 
ans =
0.5000

EDU>> roots(p)    % Raices del polinomio p

ans =
-1.7793         
0.4292 + 1.1502i
0.4292 - 1.1502i
-0.7458    
      

5. PROGRAMACIÓN CON MATLAB

El sistema MATLAB incluye las instrucciones típicas de un lenguaje estructurado:
for, while e if.

5.1 CONSTRUCCIÓN  for

Con el bucle  for se repite un conjunto de sentencias un número finito de veces. Su esquema general es:

for  variable = expresión, sentencias, end 

o, lo que es lo mismo:

for  variable = expresión

    sentencias

end 

En cada iteración MATLAB guarda una columna de la expresión en la variable, ejecutándose las sentencias hasta la siguiente sentencia end.

Ejemplo. Para calcular un vector cuyas componentes son los cinco primeros números naturales
bastaría con escribir el siguiente bucle en la línea de órdenes:

EDU>> for i=1:5, v(i)=i, end

v =
1

v =
1 2

v =
1 2 3

v =
1 2 3 4

v =
1 2 3 4 5

De esta forma vemos cómo se va construyendo el vector en cada iteración. Si sólo desamos saber el resultado final añadimos un punto y coma al final de la construcción del bucle:

EDU>> for i=1:5, v(i)=i; end, v

EDU>>
v=1 2 3 4 5
 

5.1 CONSTRUCCIÓN  while

La construcción  while repite un conjunto de sentencias mientras se cumpla  una condición. Su esquema general es:

while
condición,
sentencias

end

o, lo que es lo mismo:

while condición

    sentencias

end



5.1 CONSTRUCCIÓN  if 

La construcción  if ejecuta un conjunto de sentencias si una condición se cumple. Su forma general es:

if
condición

  sentencias

end

También existe la opción de que se ejecute otro conjunto de sentencias si la condición no se cumple:

if condición

  sentencias

else

   sentencias

end

Lo más practico cuando se programa en MATLAB es editar ficheros.m.
Estos ficheros son ficheros de texto que contienen órdenes de MATLAB. Para utilizarlos se siguen los siguientes pasos: