Академический Документы
Профессиональный Документы
Культура Документы
Práctica 0: INTRODUCCION AL PROGRAMA MATLAB
Incluye un formulario que deberá ser entregado cubierto al inicio de la práctica 5.
CONOCIMIENTOS PREVIOS.
El objetivo de la práctica es familiarizarse y recordar las órdenes básicas del programa Matlab, que es un entorno de
trabajo y simulación usado para el análisis y síntesis de sistemas dinámicos utilizado mayoritariamente en algunas
asignaturas del curso anterior.
Matlab es un entorno abierto para el que hay disponibles distintos módulos especializados: Control Systems, Signal
Processing, System Identification, etc… que puede trabajar con sistemas continuos y discretos, lineales y no lineales.
Para trabajar con Matlab se utiliza un conjunto de órdenes, a las que se les pueden pasar variables y que en ocasiones
devuelven otras variables como resultado. Es un lenguaje de expresiones que son introducidas por el usuario e
interpretadas y evaluadas por el programa en el que la sintaxis general de las órdenes utilizadas es la siguiente:
[output1, output2, ...,outputN] = nombre_orden(input1,input2, ...,inputK)
Las variables de salida se escriben entre corchetes y las de entrada entre paréntesis (si hay una sola salida los
corchetes son opcionales). Se recuerdan algunos detalles significativos:
a) Cada línea es una instrucción. Para ejecutar varias instrucciones en una línea, se separarán con “,” o “;”.
b) Si al final de cada instrucción se coloca un punto y coma (;) el programa no muestra el resultado.
c) Para introducir comentarios se escribe el carácter % y a continuación el comentario (hasta el final de la línea).
d) Las flechas del teclado permiten repetir las instrucciones anteriores.
e) El programa Matlab distingue entre mayúsculas y minúsculas.
f) El primer elemento de cualquier vector el vector es el “1”. No existe “elemento 0”
El elemento básico de Matlab es una matriz de números complejos. La evaluación de las expresiones siempre da como
resultado una matriz. Esta representación es muy general e incluye vectores y escalares, reales y complejos y, de
forma indirecta, polinomios y funciones de transferencia.
La matriz se introduce usando corchetes y los elementos de cada fila se separan usando espacios en blanco o comas y
las diferentes filas se separan con punto y coma o “intro”. Las matrices se pueden trasponer añadiendo una comilla. Si
tiene una única fila o una única columna se tratará de un vector y podrá representar un polinomio.
>>x=[1 2 3], y=[3.55,2*pi,sqrt(‐1),2+4j] x =
1 2 3
y =
3.5500+0.0000i 6.2832+0.0000i 0.0000+1.0000i 2.0000+4.0000i
>> z = y’ % Traspuesta z =
o 3.5500 + 0.0000i
>> z=[3.55;2*pi;sqrt(‐1);2+4j] 6.2832 + 0.0000i
0.0000 + 1.0000i
2.0000 + 4.0000i
>>a = [1 2 3;4 4 5;6 7 8;9 10 0] a =
1 2 3
4 4 5
6 7 8
9 10 0
>> b=[2.4 4.55 b =
5.444 pi+2i] 2.4000 4.5500
5.4440 3.1416 + 2.0000i
OPERACIONES Y FUNCIONES.
Operaciones aritméticas básicas: +, ‐, *, /, \ , ^ , sqrt
Operaciones de relación: >, <, <=, >=, == (igual), ~= (distinto)
Operaciones lógicas: & (and), | (or), ~ (not)
Funciones trigonométricas básicas: sin, cos, tan, asin, acos, atan, atan2
Funciones logarítmicas básicas: exp, log, log10, log2,...
OPERACIONES SOBRE MATRICES
>> A\B % inv(A)*B; devuelve la matriz X tal que A∙X = B
>> A/B % A*inv(B); devuelve la matriz X tal que X∙B = A
>> inv(A) % Devuelve la matriz inversa de A
Práctica 0 ‐ 1
OPERACIONES SOBRE MATRICES (elemento a elemento)
C = A.*B % Multiplica elemento a elemento las matrices A y B: cij = aij * bij
A./B, A.\B y A.^B % Devuelve aij/bij, bij/aij y aij bij respectivamente.
COMANDOS DE INTERÉS SOBRE MATRICES
D = A(i,:) % vector fila con todos los datos de la fila “i‐ésima”.
D = A(:,j) % vector columna con todos los datos de la columna “j‐ésima”.
D = A(i1:i2,j1:j2) % submatriz con las filas i1 a i2 y las columnas j1 a j2.
B = A’ % traspuesta de A
det(A) % determinante de A
inv(A) % inversa de A
rank(A) % rango de A
size(A) % tamaño de A
p = poly(A) % polinomio característico de A
Si a una matriz se le añade un número de una dirección no existente, la matriz crecerá hasta encajar el nuevo
elemento y rellenará con ceros los espacios no especificados.
Matrices especiales:
eye(n) % identidad nxn
eye(n,m) % identidad nxm
ones(n), ones(n,m) % matriz de 1’s, tamaño correspondiente
zeros(n), zeros(n,m) % matriz de 0’s, tamaño correspondiente
diag([…]) % matriz diagonal de tamaño ‘nº el’ x ‘nº el’
COMANDOS GENERALES DE INTERÉS (AYUDA)
>> who % Lista todas las variables del espacio de trabajo.
>> clear % Borra el espacio de trabajo.
>> help % Lista todos los comandos de Matlab.
>> help n % Proporciona ayuda del comando n.
>> clf % Borra la figura activa.
DESARROLLO DE LA PRÁCTICA
Repetir los comandos que se destacan y observar los resultados. Se proporcionan de forma escueta para que se utilice
el comando help cuando sea necesario. Se incluyen, además, otros comandos por su interés.
Al final de la práctica se propone un formulario para destacar algunas instrucciones que por su importancia se
deberán conocer y que se entregará INDIVIDUALMENTE al principio de la práctica 5.
La expresión ‘FORMULARIO (?)’ indica que en la casilla del formulario indicada entre paréntesis se deberá cubrir el
resultado de la instrucción o lo que se señale en la misma.
1. TRABAJO CON MATRICES.
>> aux = [1 2 3; 4 5 6; 7 8 0]
>> D = aux(1:2,2:3)
>> D(3,4) = 10 FORMULARIO (a)
>> unoD=ones(size(D)) FORMULARIO (b)
>> ceroD=zeros(size(unoD)) FORMULARIO (c)
2. TRABAJO CON VECTORES Y POLINOMIOS.
>> P = [1 8 15] % Define el polinomio P = x2 + 8x + 15
>> roots(P) % Devuelve las raíces del polinomio P
>> Q = [1 0 4] % Define el polinomio Q = x2 + 4 x2 + 0x + 4
>> roots(Q) % Obtiene las raíces del polinomio Q
>> S = conv(P,Q) % Calcula el producto de polinomios
>> roots(S) % Calcula las raíces del polinomio S
Comprobar la diferencia existente entre las siguientes instrucciones incluyendo las respuestas en el formulario:
>> F1=conv(P,Q) FORMULARIO (d)
>> F2=P*Q FORMULARIO (e)
>> F3=P.*Q FORMULARIO (f)
>> F4=P*Q’ FORMULARIO (g)
>> F5=P’*Q FORMULARIO (h)
Práctica 0 ‐ 2
Con objeto de familiarizarse en el manejo de vectores que podrán representar tanto vectores de tiempo como valores
de funciones se recomienda prestar especial atención a los siguientes comandos, aunque por su tamaño no se
soliciten las respuestas en el formulario:
>> x = 1 : 5 % vector de 5 elementos de 1 a 5, incremento 1
>> y = 0: 0.5 : 5 % vector de 11 elementos, de 0 a 5, incremento 0.5
>> z = 5 : ‐1 : 0 % vector de 6 elementos, de 5 a 0, decremento 1.
>> z(4) % devuelve el 4º elemento del vector z
>> ambos=[x y] % concatenación de vectores
>> t = 0: 0.2 : 8 % vector de tiempo de 0 a 8 sg con precisión de 0.2 sg
3. CONTROL DE FLUJO DE PROGRAMA (for, while, if).
>> x = [ 1 1 1 1 1 1 1]
>> for i = 2:4, x(i) = 0; end; x % comprobar el nuevo valor de x / FORMULARIO (i)
>> x = [ 10 20 30 40 50 60 70 80]
>> i = 1, while x(i) < 45, x(i) = 0; i=
i+1;end;
>> x % comprobar el nuevo valor de x / FORMULARIO (j)
Las instrucciones del ‘while’, ‘for’ , ‘if’ pueden introducirse en líneas independientes y encadenarse:
>> x = [‐1 2 ‐3 4 ‐5 6]
>> for i=1 : 6
if x(i) < 0, x(i) = 0;
else x(i) = 22;
end;
end;
>> x % comprobar el nuevo valor de x / FORMULARIO (k)
4. TRABAJO CON GRÁFICAS.
>> x=[0.0 0.5 1.5 2.0 3.0 4.0 6.0 4.0 4.5]
>> plot(x) % gráfico en 2D
>> grid % Dibuja una cuadrícula en el gráfico. Observar.
>> title(‘mi gráfico’) % Añade un título al gráfico y a los ejes. Verificarlo
>> xlabel(‘x’), ylabel(‘y’) % en la ventana gráfica
Las instrucciones se realizan sobre la ventana gráfica activa.
>> x = [1 2 4 8 16 32 64]
>> y = [5.0 6.0 6.5 6.6 6.4 6.2 4.5]
>> plot(x,y);grid % Dibuja y en función x
>> plot(y,x);grid % Dibuja x en función y
>> plot(x,y,'b') % Dibuja y en función de x en color azul (blue)
>> plot(x,y,'o') % Dibuja y en función de x usando el símbolo ‘o’
>> plot(x,y,'+y') % Dibuja y en función de x usando ‘+’, color amarillo (yellow)
>> plot(x,y,'*r') % Dibuja y en función de x usando ‘*’, color rojo (red)
>> t=0:0.01:10; % Define la variable t con valores de 0 y 10 a intervalos de 0.01
>> y = sin(t); % Define la variable y como el seno de la variable t.
>> plot(t,y);grid % Dibuja la función seno(t) en el rango de la variable t.
>> z = cos(2*t); % Define la variable z como el coseno de la variable (2*t)
>> plot(t,z);grid % Dibuja la función coseno(2*t) entre t=0 y t = 10.
>> plot(t,y,'r',t,z,'g') % Dibuja ambas funciones en una gráfica (rojo y verde)
>> v = [0 20 ‐2 2] % [xmin, xmax, ymin, ymax]
>> axis(v) % Fija el rango de los ejes (abscisas 0 a 20 y ordenadas –2 a 2)
>> hold on % Mantiene el gráfico actual
>> p = y.*y; % Define la variable p como y2
>> plot(t,p,’b’) % Dibuja sobre el gráfico antiguo la variable p (en color azul)
>> hold off % Permite el refresco total del gráfico actual
Práctica 0 ‐ 3
Se puede hacer un ZOOM sobre una zona del gráfico seleccionando el icono que aparece en la ventana gráfica. Es
posible crear varias figuras para disponer de ellas de forma simultánea.
5. FUNCIONES Y ALMACENAMIENTO EN DISCO. APLICACIÓN.
En modo normal, Matlab ejecuta comandos en forma interactiva, tras escribir el comando, Matlab responde. También
se pueden ejecutar programas que estén almacenados en ficheros en disco. Existen dos requisitos: el programa (en
formato solo texto) debe residir en el “path” del Matlab y debe tener extensión “.m”. El programa Matlab maneja dos
tipos básicos de ficheros (M‐files): function files y script files.
Scripts: Fichero con el conjunto de instrucciones a realizar tras la llamada. Ya que su nombre será la ‘instrucción’, no
podrá incluir espacios ni caracteres ‘extraños’. Las instrucciones se ejecutan igual que si se hubiesen introducido
directamente en la ventana de comandos. Las variables que se usen en el script afectan al espacio de trabajo; son
globales.
Functions: Parecido al anterior pero admite el paso de parámetros y puede devolver resultados. Si se usan variables
auxiliares dentro de la función, éstas serán locales a la función, y no afectan al espacio de trabajo.
El formato de una función debe ser el siguiente:
Nombre del fichero: nombre_funcion.m
Instrucciones:
function [sal1,sal2,sal3, ...] = nombre_funcion(ent1,ent2, ...)
.......
[sal1,sal2,sal3, ...] = ... % Asignación de valores (juntos o separados)
NOTA: Cuando se eligen los nombres, tanto de funciones como de programas o variables, se debe prestar atención
a la posible redefinición de funciones propias y valores de Matlab.
Mediante los botones de Matlab “New script” o “+New…” crear dos ficheros, uno correspondiente a una función (con
el nombre fact.m) y el otro a un script (con el nombre programa.m).
fact.m programa.m
function result = fact(dato) disp('Cálculo del M.C.D. de dos enteros');
% devuelve el factorial de dato a = input('Valor del primer entero ');
result = 1; b = input('Valor del segundo entero ');
for i=1 : dato data = a;
result = result * i; datb = b;
end; while (a ~= b) % Alt Gr + 44
if (a > b) a = a ‐ b;
else b = b ‐ a;
end;
end;
fprintf('\nEl mcd de %d y %d es %d \n',data,datb,a);
Tras crear los dos ficheros y guardarlos en disco con los nombres indicados (fact.m, programa.m) pueden ser utilizados
de la siguiente forma desde el Matlab.
>> fact(10)
>> a = fact(3) FORMULARIO (l)
>> b = fact(a) FORMULARIO (m)
>> b = fact(2+a) FORMULARIO (n)
>> programa FORMULARIO (o)
6. EJERCICIO.
Representar gráficamente (y copiar la gráfica en el FORMULARIO (p)) la función y = 2 * seno(5t) * (e‐2t ) entre t = 0 y
t = 3, utilizando intervalos de tiempo de 0.001 segundos.
Utilizando las funciones de Matlab max y min, calcular el máximo y el mínimo de la función en ese intervalo, así como
el instante de tiempo en el que se producen. Comprobar, haciendo zoom, que esos valores son correctos.
Se sugiere la ejecución de las funciones: exp, sin, max, min, plot.
Práctica 0 ‐ 4
Práctica 0: FORMULARIO (Trabajo previo práctica 5)
Nombre ............................................................................................................................... Grupo ................. Puesto ......... .
a: D b: unoD c: ceroD
g: F4 h: F5
o: frase final del programa
p: gráfica final
Fecha ............................................................... Firma:
Práctica 0 ‐ 5