Está en la página 1de 12

Universitat Politècnica de Valencia

Departamento de Ingeniería de Sistemas y Automática

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

2. Sintaxis básica en Matlab 2


2.1. Creación y Asignación de Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2. Sintaxis de Vectores y Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3. Operaciones de Rango . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4. Operaciones Básicas con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5. Uso de Funciones Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6. Almacenamiento en Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Gráficos en Matlab 7

4. Programando en Matlab: Scripts 9

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:

• Realización de cálculos matemáticos.


• Modelado y simulación.
• Desarrollo de algoritmos.

• 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:

• Introducción a Matlab: http://politube.upv.es/play.php?vid=54468


• Matrices: http://politube.upv.es/play.php?vid=54469
• Scripts y bucles: http://politube.upv.es/play.php?vid=54470

• 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.

1.2. Puesta en Marcha


Matlab se puede arrancar haciendo doble clic sobre el icono del escritorio o a través del menú Inicio, en UPVnet/A-
plicaciones Científicas, de Windows. Se abrirá la ventana de Matlab que presenta el aspecto de la figura 1. En la parte
derecha aparece la ventana de comandos, donde insertaremos los comandos que deseemos que Matlab ejecute.

1.3. Organización de Ventanas


La figura 1 muestra el espacio de trabajo con la división en ventanas por defecto:

• La estructura del directorio donde nos encontramos (arriba a la izquierda)


• La historia de los comandos que se han tecleado (debajo a la izquierda)
• La ventana de edición de programas de Matlab (arriba a la derecha)
• La línea de comandos, donde se teclean los comandos de Matlab (abajo a la derecha)

1.4. Ayuda en Línea


Si se ha instalado la ayuda, podemos acceder a ella en todo momento pulsando la tecla Fl. La documentación está
organizada con un índice en forma de árbol y mediante hipervínculos. La ayuda es muy útil tanto a modo de introducción
como de referencia para temas específicos.
Si se desea ver la documentación específica asociada a un comando de Matlab, se puede teclear: » help nombre-
comando en la línea de comandos de Matlab.

2. Sintaxis básica en Matlab


2.1. Creación y Asignación de Variables
Lo primero que hay que tener en cuenta es que en Matlab todos los objetos son matrices. Por ejemplo, un escalar es
una matriz 1 x 1. Usando la línea de comandos podemos asignar un nombre simbólico para identificar una matriz:

>> a=[10; 20; −15]; %Asignacion

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]

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).

2.2. Sintaxis de Vectores y Matrices


Las matrices (y vectores como caso particular de las mismas) se expresan en Matlab empleando corchetes ([ ]) y
separando las filas con espacio o coma (,) y las columnas con punto y coma (;). Empleando estos comandos se pueden
crear matrices del siguiente modo:

>> mat=[1 2 3; 4 5 6; 7 8 9]

mat =

1 2 3

3
4 5 6
7 8 9

Cuando se trata de un escalar, podemos prescindir de los corchetes:

>> 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=[2+3i, −5i, 3]

v =

2.0000 + 3.0000i 0 − 5.0000i 3.0000

El acceso a elementos de una matriz previamente definida puede realizarse especificando la fila y columna del elemento
que nos interesa entre paréntesis.

>> mat(2,3) % Acceso al elemento (2,3) de la matriz mat

ans =

Dentro de los paréntesis podemos usar variables y operaciones más complejas.

2.3. Operaciones de Rango


En Matlab existe un operador muy útil que la mayoría de lenguajes de programación no incorporan: el operador de
rango (:). Supongamos que queremos crear un vector con todos los números enteros entre 1 y 10, bastará con usar el
operador con la expresión:

>> 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 =

1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

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:

>> mat(2: 3,1: 2)

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 =

1.6000 1.8000 2.0000

Para obtener los 3 últimos elementos del vector a podemos usar el siguiente comando:

>> a((length(a)−2):end)

ans =

1.6000 1.8000 2.0000

2.4. Operaciones Básicas con Matlab


Una vez definidos los objetos con sus identificadores, podemos realizar operaciones aritméticas entre ellos. Para las
operaciones vectoriales y matriciales, Matlab verificará la coherencia de las dimensiones de los operandos antes de dar
un resultado.
Como ejemplo podemos definir dos vectores v1 y v2 y calcular un tercer vector v3 a partir de ellos:

>> vl=[2+3i, −5i, 3];


>> v2= [0, 1, 7];
>> v3=vl+2*v2+[1, 1, 1]

v3 =

3.0000 + 3.0000i 3.0000 − 5.0000i 18.0000

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, c=0.5;

a =
1
b =
5

>> x1=−b+sqrt(b^2−4*a*c)/(2*a) %Agrupando operaciones

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")

Figura 2: Operaciones aritméticas y lógicas en Matlab.

2.5. Uso de Funciones Matemáticas


Buena parte de las operaciones que se realizan con Matlab son llamadas a funciones. Las funciones procesan infor-
mación, por lo que poseen datos de entrada y de salida (ambos pueden ser matrices). Los datos de entrada se especifican
entre paréntesis, y si son varios, separados por comas. Por ejemplo, la siguiente función calcula la raíz cuadrada de su
único valor de entrada, el vector fila [4,2]:

>> sqrt([4 2])

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.

2.6. Almacenamiento en Ficheros


Matlab permite almacenar en el disco las variables del espacio de trabajo. De este modo es posible parar una sesión
de trabajo y continuar en otro momento sin volver a repetir cálculos. La orden más común para almacenar datos es save
(ver detalles en la figura 7).
Para recuperar las variables almacenadas previamente en un archivo usamos la función load (ver detalles en la figura
8).

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

Figura 3: Funciones elementales de Matlab: Triginometría.

Nombre Función
exp Exponencial
log Logaritmo natural (base e)
log2 Logaritmo en base 2
log10 Logaritmo en base 10
sqrt Raı́z cuadrada

Figura 4: Funciones elementales de Matlab: Exponenciales.

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

Figura 5: Funciones elementales de Matlab: Ajuste y Redondeo.

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

Figura 6: Funciones elementales de Matlab: Operaciones Matriciales.

Orden Operación realizada.


save Crea el archivo de nombre matlab.mat en la
carpeta actual. Dicho archivo contiene todas
las variables que existen en ese momento en
entorno Matlab.
save nombrearchivo Crea el archivo de nombre en nombrearchi-
vo.mat en la carpeta actual. Dicho archivo
contiene todas las variables que existen en
ese momento en el entorno Matlab.
save nombrearchivo x y z Crea el archivo de nombre nombrearchi-
vo.mat en la carpeta actual. Dicho archivo
contiene únicamente las variables x, y y z.

Figura 7: Funciones para almacenar la información en ficheros.

Orden Operación realizada.


load Lee toda las variables del archivo de nombre
matlab.mat de la carpeta actual. Si alguna
de las variables del disco tiene nombre co-
incidente con otra que previamente existe en
Matlab se producirá la destrucción de la vari-
able existente para dejar su sitio a la variable
del disco.
load nombrearchivo Igual que en el caso anterior, pero leyendo
del archivo nombrearchivo.mat de la carpeta
actual.
load nombrearchivo x y z Igual que el anterior pero leyendo únicamente
las variables x, y y z.

Figura 8: Funciones para recuperar la información almacenada en ficheros.

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:

>> T=[0:0.01:10]; % Vector de tiempos


>> Y=3*sin(5*T); % Senal senoidal

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.

4. Programando en Matlab: Scripts


Hasta ahora hemos usado Matlab introduciendo los comandos uno a uno en la linea de comandos, sin embargo, en
general es mucho más práctico agrupar la secuencia de comandos en un programa o script de Matlab.

9
Figura 9: Ejemplo de utilización del comando plot.

Figura 10: Ejemplo de utilización del comando subplot.

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