You are on page 1of 5

MATLAB en 30 minutos

Rafael Collantes. Octubre 2001


1. Introduccin
MATLAB naci como un programa para clculo matricial, pero en la actualidad MATLAB es un
sistema que permite no solamente realizar todo tipo de clculos sino tambin simulaciones temporales,
adquisicin de datos y simulacin de mquinas de estado.
El sistema bsico contiene las funciones ms comunes y generales. Para tareas ms especficas,
existen libreras (Toolboxes en el argot MATLAB) especializadas. As, en el Laboratorio de Control se
utilizarn las libreras de control (Control Systems Toolbox) y de tiempo real (Real Time Windows
Target). Existe una gran cantidad de libreras especializadas, que cubren campos tan dispares como
finanzas o proceso de imgenes.
Figura 1. Ventana de comandos de MATLAB
2. Matrices y vectores
MATLAB almacena los datos en escalares, vectores, matrices y matrices multidimensionales. As,
para definir una matriz de 2 por 3 se tecleara:
A=[1 4 6
5 6 7]
Los elementos se han separado por espacios, mientras que para terminar una file se pulsa Enter. La matriz
se termina cerrando un corchete.
Un vector es una matriz de 1 por n o de m por 1. En el siguiente ejemplo, definimos la variable serie que
es un vector de 1 por 4:
serie=[ 2 3 5 1 2]
Igual que antes, los elementos se separan por espacios y el vector se cierra con un corchete.
Para introducir un vector de 6 por 1, se podra ir introduciendo fila a fila separadas por Enter, pero es ms
cmodo definirlo como el traspuesto de un vector de 1 por 6:
otra=[4 5 6 5 6 0]
El operador para indicar trasposicin es el apstrofo o comilla simple (, NO el acento)
Un comando importante es whos: permite saber qu variables estn definidas, de qu tipo son, dimensin,
etc.: En este momento, tecleando whos se obtiene el siguiente resultado:
whos
Name Size Bytes Class
A 2x3 48 double array
otra 6x1 48 double array
serie 1x5 40 double array
Grand total is 17 elements using 136 bytes
Como ya tenemos algunas variables, podemos realizar operaciones como multiplicar una matriz por un
escalar.
A*3
ans =
3 12 18
15 18 21
Pero si intentamos:
A*A
??? Error using ==> *
Inner matrix dimensions must agree.
El error se debe a que la matriz A no es cuadrada, y por lo tanto no se puede multiplicar por s misma. Sin
embargo es posible hacer:
A'*A
ans =
26 34 41
34 52 66
41 66 85
y tambin
A*A'
ans =
53 71
71 110
Para seleccionar un elemento dentro de una matriz o vector, se usan los parntesis:
A(2,3)
ans =
7
y tambin:
serie(3)
ans =
5
Si lo que se quiere es tomar un trozo de una matriz o vector y no slo un elemento, se utilizarn dos
puntos para indicar el margen de inters:
A(1,2:3)
ans =
4 6
Lo que devuelve de la primera fila, los elementos del 2 al 3 (no el 2 y el 3). Otro ejemplo:
otra (2:5)
ans =
5
6
5
6
Cuando se utilizan los dos puntos sin especificar inicio ni fin del margen, se estn pidiendo todos los
elementos de esa dimensin (esa fila o esa columna):
A(:,3)
ans =
6
7
y por supuesto:
A(:,:)
ans =
1 4 6
5 6 7
3. El comando plot
El comando plot representa variables en una grfica:
plot (serie)
1 1.5 2 2.5 3 3.5 4 4.5 5
1
1.5
2
2.5
3
3.5
4
4.5
5
Si se da como parmetro una matriz, plot supone que se quieren representar las columnas, cada una como
una curva:
plot (A)
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
1
2
3
4
5
6
7
Con lo que tenemos tres curvas, cada una de ellas con slo dos puntos.
En los dos ejemplos anteriores, el eje horizontal toma valores correspondientes a los ndices de los
vectores representados, considerando que el primer elemento tiene ndice 1 (y no 0 como en lenguaje
C). Sin embargo, en muchas ocasiones y en particular en el Laboratorio de Control se tratar con seales
temporales, en las que es interesante representar en el eje horizontal el tiempo. En el siguiente ejemplo se
ha creado un vector t que contiene el tiempo desde 0 a 1 segundo en pasos de 50ms y una seal y que
representa la variable estudiada:
t=(0:0.05:1)
t =
Columns 1 through 7
0 0.0500 0.1000 0.1500 0.2000 0.2500 0.3000
Columns 8 through 14
0.3500 0.4000 0.4500 0.5000 0.5500 0.6000 0.6500
Columns 15 through 21
0.7000 0.7500 0.8000 0.8500 0.9000 0.9500 1.0000
y=rand(1,21)
y =
Columns 1 through 7
0.4551 0.0811 0.8511 0.5620 0.3193 0.3749 0.8678
Columns 8 through 14
0.3722 0.0737 0.1998 0.0495 0.5667 0.1219 0.5221
Columns 15 through 21
0.1171 0.7699 0.3751 0.8234 0.0466 0.5979 0.9492
La funcin rand nos devuelve una matriz de la dimensin especificada con nmeros aleatorios
uniformemente distribuidos en el intervalo (0,1)
Para representar grficamente esta seal, se utiliza el comando plot con dos argumentos:
plot (t,y)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
4. Formato para los datos recogidos en el laboratorio
Como ya se ha comentado, en el Laboratorio de Control se utilizar MATLAB como herramienta para
control y adquisicin de datos. Habitualmente, los datos recogidos se guardan en matrices en las que la
primera columna representa el tiempo y la(s) siguiente(s), la(s) variable(s) de inters. En los siguientes
ejemplos, se tienen tres matrices, cada una de 10001 por 2:
whos
Name Size Bytes Class
iref 10001x2 160016 double array
ref 10001x2 160016 double array
vcont 10001x2 160016 double array
Grand total is 60006 elements using 480048 bytes
Como ya se ha comentado, cada una de las tres variables es una matriz con dos columnas en las que la
primera de ellas representa el tiempo. Para representar en una grfica la velocidad del motor, se puede
utilizar el comando plot como ya se ha visto:
plot (vcont(:,1),vcont(:,2))
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-60
-40
-20
0
20
40
60
80
De esta forma se ha especificado que la primera columna es el tiempo y la segunda la variable registrada,
que en este caso es la velocidad de un motor, expresada en porcentaje de la velocidad mxima. Obsrvese
que el tiempo total del ensayo ha sido 5 segundos.
Si lo que se quiere es representar nicamente un trozo del ensayo y no los 5 segundos, es necesario
conocer los ndices de las filas inicial y final que se quieren representar. Para ello se puede usar la funcin
find:
origen=find(vcont(:,1) == 1.8)
origen =
3601
Lo que se ha hecho ha sido pedirle a MATLAB que encuentre en qu posicin de la primera columna de
vcont (que es el tiempo) se encuentra el valor 1.8, que es el momento del ensayo que queremos tomar
como origen para una nueva grfica. De forma anloga encontramos la posicin del ltimo elemento que
queremos representar:
fin=find(vcont(:,1) == 2.5)
fin =
5001
Ahora ya se puede representar el ensayo entre 1.8 y 2.5 segundos:
plot (vcont(origen:fin,1),vcont(origen:fin,2))
1.8 1.9 2 2.1 2.2 2.3 2.4 2.5
48
50
52
54
56
58
60
62
64
En ocasiones querremos no slo representar una seal en un intervalo concreto, sino varias seales en ese
mismo intervalo. Es fcil:
plot (vcont(origen:fin,1),vcont(origen:fin,2),ref(origen:fin,1),ref(origen:fin,2))
1.8 1.9 2 2.1 2.2 2.3 2.4 2.5
48
50
52
54
56
58
60
62
64
Muchas veces queremos representar varias seales en funcin del tiempo, coincidiendo entonces el eje de
abscisas (como en el ejemplo anterior). Se consigue la misma grfica anterior con:
plot (vcont(origen:fin,1),[vcont(origen:fin,2) ref(origen:fin,2)])

You might also like