apuntes de matlab
TRANSCRIPT
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 2. Operaciones aritméticas 3. Vectores y matrices 4. Operaciones con matrices 5. Polinomios 6. Programación con MATLAB
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 MATLABel 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 :
MATLAB distingue entre mayúsculas y minúsculas. Los comentarios, que vendrán en color morado, deben ir
precedidos por % para que MATLAB los ignore. Las órdenes ejecutadas por MATLAB con anterioridad pueden
recuperarse siempre con las teclas <ARRIBA> y <ABAJO>. Con diary nombre_fichero MATLAB ordena grabar en
un fichero la sesión de todo lo que se ha visto por pantalla hasta que se ejecuta diary off. Si se quiere volver a guardar se ejecuta la de nuevo la orden diary off.
Para acceder a la ayuda de MATLAB basta teclear help en la ventana de órdenes, donde se puede encontrar información sobre
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 00 0 1 La matriz cuyas entradas son todas uno:
EDU>> ones(3)
ans =1 1 1 1 1 11 1 1
La matriz cuyas entradas son todas cero:
EDU>> zeros(3)
ans =0 0 0 0 0 00 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 226068480226068480 511039488
Una de las características de MATLAB es que dispone de un gran número de funciones queactú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 945910089 12663 15237
EDU>> A.^3 % Calcula la potencia cúbica de cada entrada de A ans = 1 27 125 343 729 13312197 3375 4913
EDU>> log(A) % Calcula el logaritmo de cada entrada de A
ans =0 1.0986 1.60941.9459 2.1972 2.39792.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.1502i0.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:
1. Escribimos el fichero en el editor de MATLAB o en cualquier editor ASCII.
2. Lo guardamos con extensión .m. 3. Ejecutarlo escribiendo en la línea de órdenes el nombre del fichero