Académique Documents
Professionnel Documents
Culture Documents
Anexo Práctica 2
Introducción básica a Matlab
Control Automático (cod. 11887)
Grado en Ingeniería Aeroespacial
ETSID
Sergio García-Nieto
Juan Manual Herrero
Xavier Blasco
Índice
1. Introducción 1
1.1. Componentes de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Puesta en Marcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Organización de Ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4. Ayuda en Línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Gráficos en Matlab 7
1. Introducción
Inicialmente pensado como herramienta de cálculo matricial, Matlab se ha convertido en una de las herramientas
más utilizadas en diferentes áreas de conocimiento, que van desde la ingeniería hasta el análisis estadístico o financiero.
Algunas de las aplicaciones más habituales de Matlab son:
• Adquisición de datos.
• Análisis y procesado de datos y señales.
• Creación de gráficos científicos y de ingeniería.
• Desarrollo de aplicaciones.
Matlab ha ido creciendo a base de incluir librerías especializadas en un área de conocimiento específico: finanzas,
tratamiento de señales, teoría de sistemas, biología computacional, etc.
Se han desarrollado un conjunto de vídeos tutoriales donde se pueden repasar las características básicas de Matlab,
tal y como se muestra en:
• Funciones: http://politube.upv.es/play.php?vid=54471
• Gráficos: http://politube.upv.es/play.php?vid=54472
1
1.1. Componentes de Matlab
Matlab consta de cinco elementos fundamentales:
1. Entorno de desarrollo. Se trata de un conjunto de utilidades que permiten el uso de funciones Matlab y ficheros
en general. Incluye el espacio de trabajo Matlab y la ventana de comandos.
2. La librería de funciones matemáticas Matlab. Se trata de un amplio conjunto de algoritmos que comprende las
funciones más elementales ?como la suma? y funciones más sofisticadas ?como la inversión de matrices o las
transformadas rápidas de Fourier.
3. Gráficos. Matlab dispone de un conjunto de utilidades destinadas a visualizar datos mediantes gráficas y ofrece
muchas posibilidades para ajustar su aspecto.
4. Lenguaje de programación. Matlab incorpora un lenguaje de programación completo con el que crear programas
que hagan uso del resto de sus capacidades.
5. El interfaz de aplicación de Matlab (API). Consiste en una librería que permite escribir programas ejecutables
independientes en C y otros lenguajes.
En esta práctica nos centraremos en el entorno de desarrollo y las librerías de funciones matemáticas y gráficas.
2
Figura 1: Interfaz de usuario de Matlab.
Esto es una asignación de un vector columna que llevará el nombre a (a su derecha aparece un comentario, útiles
solo cuando escribimos programas en Matlab).
Los objetos pueden crearse en cualquier momento. Para ello basta con asignarles un valor mediante una asignación,
como en el ejemplo previo. Los identificadores ?nombres? empleados para designar cada matriz son de libre elección,
pero no pueden comenzar con un número ni contener espacios en blanco.
En las sentencias previas aparece el signo punto y coma (;) al final de cada comando. Este símbolo sirve para separar
unos comandos de otros cuando escribimos varios comandos en una sola línea. Además, si escribimos un comando aislado
(sin ’;’) y pulsamos ENTER, Matlab proporcionará siempre una salida en respuesta al comando:
a = 10
20
−15
Sin embargo, si escribimos el comando seguido de ’;’, no se mostrará la respuesta en pantalla. Cuando los comandos
forman parte de un programa es conveniente emplear ’;’ para evitar llenar la pantalla con información innecesaria.
Una vez creado un objeto de Matlab, éste pasa a formar parte del espacio de trabajo ocupando una porción la
memoria. Puedes consultar el listado de la variables existentes en el espacio de trabajo mediante el comando whos (ver
ayuda). A veces, tras horas de trabajo con Matlab, necesitaremos eliminar los objetos que ya no se utilicen. Para ello se
emplea el comando clear (ver ayuda).
>> mat=[1 2 3; 4 5 6; 7 8 9]
mat =
1 2 3
3
4 5 6
7 8 9
>> rad=3.1415;
Los elementos
√ de las matrices pueden ser reales o complejos. En este último caso se emplea la letra i para representar el
valor −1. Como ejemplo podemos definir el vector fila v = [2 + 3i, −5i, 3]:
v =
El acceso a elementos de una matriz previamente definida puede realizarse especificando la fila y columna del elemento
que nos interesa entre paréntesis.
ans =
>> a= 1:10
a =
1 2 3 4 5 6 7 8 9 10
La sintaxis general del operador de rango es: valor mínimo:incremento:valor máximo. Así, para generar todos los números
entre 1 y 2 en incrementos de 0.2 escribiremos:
>> a= 1:0.2:2
a =
Una segunda aplicación del operador de rango es el acceso a submatrices o subvectores. Supongamos que hemos
definido la matriz mat anteriormente definida. Para acceder a la submatriz comprendida entre los elementos (2,1) y (3,2)
bastará con escribir:
ans =
4 5
4
7 8
Se puede usar el término end para indicar que el rango se extiende hasta el último elemento del vector o matriz:
>> a(4:end)
ans =
Para obtener los 3 últimos elementos del vector a podemos usar el siguiente comando:
>> a((length(a)−2):end)
ans =
v3 =
La figura 2 ilustra las operaciones aritméticas y lógicas básicas que se pueden realizar en Matlab. Estas operaciones se
aplican indistintamente a escalares, vectores y matrices.
Es posible usar Matlab directamente como una calculadora, tecleando las expresiones en línea de comandos para
obtener el resultado de las mismas, pero también se pueden agrupar las operaciones:
>> 12*24.8
ans =
297.6000
a =
1
b =
5
x1 =
−2.6021
5
Expresión en Matlab Operación
+ Suma aritmética
- Resta aritmética o cambio de signo
* Multiplicación aritmética
/ División
^ Elevar un número a una potencia
< Relación "menor que"
> Relación "mayor que"
<= Relación "menor o igual que"
>= Relación "mayor o igual que"
== Relación "igual que"
~= Relación "distinto que"
& producto lógico (operación ‘‘y’’)
| suma lógica (operación .o")
~ negación (operación "no")
ans =
2.0000 1.4142
Las funciones pueden ser parte del paquete básico de Matlab, pertenecer a una librería o haber sido escritas por el
usuario. Las figuras 3, 4, 5 y 6 muestran ejemplos de funciones disponibles en Matlab.
6
Nombre Función
sin Seno
sinh Seno hiperbólico
cos Coseno
cosh Coseno hiperbólico
tan Tangente
tanh Tangente hiperbólica
cot Cotangente
coth Cotangente hiperbólica
sec Secante
sech Secante hiperbólica
csc Cosecante
csch Cosecante hiperbólica
asin Arcoseno (inversa del seno)
asinh Inversa del seno hiperbólico
acos Arcocoseno (inversa del coseno)
acosh Inversa del coseno hiperbólico
atan Arcotangente (inversa de la tangente)
atan2 Arcotangente de cuatro cuadrantes
Nombre Función
exp Exponencial
log Logaritmo natural (base e)
log2 Logaritmo en base 2
log10 Logaritmo en base 10
sqrt Raı́z cuadrada
Nombre Función
fix Redondear hacia cero
floor Redondear hacia menos infinito
ceil Redondear hacia más infinito
round Redondear hacia el entero más cercano
mod Módulo de la división entera
rem Resto de la división entera
7
Nombre Función
inv Matriz inversa
det Determinante
eig Autovalores
’ Matriz traspuesta
eye Crear una matriz identidad dado el número de filas/columnas
zeros Crear una matriz de ceros dado el número de filas/columnas
ones Crear una matriz de unos dado el número de filas/columnas
length Longitud de un vector
size Dimensiones de una matriz
8
3. Gráficos en Matlab
Para estudiar el comportamiento dinámico de sistemas continuos es útil visualizar la evolución temporal de sus señales.
La operación más habitual es representar la señal de salida del sistema frente a una señal de entrada dada.
En este apartado se muestra como representar gráficamente una señal de la cual se conoce su expresión en función
del tiempo. Al disponer de dicha expresión, se puede obtener una representación de la señal como un vector de puntos,
cada uno de los cuales corresponde al valor de la señal en un determinado instante de tiempo. Cuanto mayor sea el
número de puntos obtenidos para un mismo tramo de la evolución temporal de la señal, mejor será la representación de
la señal continua. El comando básico para obtener dicha representación gráfica es el comando plot.
Vamos a representar la señal senoidal cuya expresión temporal es la siguiente:
y(t) = 3sen(5t) para t ≥ 0 (1)
La secuencia de comandos siguiente permite obtener un vector de muestras de la señal senoidal correspondiente a los 10
primeros segundos de su evolución temporal, tomando una muestra de la señal cada 0.01 segundos:
Según esto, la variable Y será un vector de 1001 elementos, de forma que el elemento que ocupa la posición i (esto
es, Y(i)) corresponde al instante de tiempo (i-1)*0.01. Las dimensiones de los vectores generados pueden comprobarse
con el comando whos. A partir de la información contenida en el vector Y, puedes comprobar que el valor de la señal
senoidal en t = 7.3 segundos es -2.7951.
El vector Y es una representación numérica de la señal senoidal. Una representación gráfica de la misma se puede
obtener mediante el comando plot:
>> plot(T,Y)
El primer vector corresponde al eje horizontal de la gráfica, que en la mayoría de los casos será el vector de tiempos.
El segundo vector corresponde con el eje vertical y contiene la información de la señal a representar. El comando plot
también permite especificar distintos tipos de trazados y colores. Consulta la ayuda (help plot) para más información.
Una vez obtenida la representación gráfica se puede emplear el zoom para analizar con mayor detalle la
señal representada. Comprueba que el valor de la señal en t = 7.3 segundos coincide con el obtenido a partir
del vector.
A continuación, se enumeran algunos comandos relacionados con la representación gráfica de señales:
Orden Operación realizada
figure Generación de una nueva ventana para la representación gráfica de señales
subplot Divide la ventana en varias gráficas
hold Mantiene/Libera la figura para permitir representar varias señales en la misma ventana
grid Activa/Desactiva una cuadrícula en la figura actual
axis Determina los límites superior e inferior de los ejes de la figura actual
title Establece un título para la figura actual
xlabel Etiqueta el eje horizontal de la figura actual
ylabel Etiqueta el eje vertical de la figura actual
Consulta la ayuda de estos comandos para conocer su sintaxis y trata de obtener unas figuras como las
figuras 9 y 10. La señales son dos senoidales de amplitud 1 y 3, y de frecuencia 7 y 5 radianes/segundo,
respectivamente.
En la figura 9 aparecen superpuestas en la misma gráfica. La figura 10 se ha dividido en cuatro gráficas
(usando subplot): señal 1, señal 2, superposición y suma de ambas.
9
Figura 9: Ejemplo de utilización del comando plot.
10
Si una secuencia de comandos se almacena en un archivo de texto (Matlab script file o M-file) con la extensión .m,
invocar el nombre del archivo desde la línea de comandos tiene el mismo efecto que introducir de forma secuencial todos
los comandos incluidos en el archivo.
Para facilitar la creación y depuración de estos programas, controlando la corrección de la sintaxis, Matlab dispone
de un editor de texto propio (ver sección 1).
Otra ventaja de usar scripts es que nos permiten almacenar la secuencia de comandos que hemos usado en nuestros
cálculos, pudiendo replicarlos cuando queramos.
Nota: Mediante estos programas o scripts podemos explotar el lenguaje de programación incluído en Matlab para la
realización de bucles (for, while), ejecuciones condicionales (if, switch), creación de funciones, etc. La combinación de
este lenguaje con las funciones matemáticas y de representación gráfica es lo que hace de Matlab una herramienta tan
potente y flexible.
11