Práctica 1 - Introducción A Matlab
Práctica 1 - Introducción A Matlab
Práctica 1 - Introducción A Matlab
Asignatura:
CONTROL DIGITAL Practica 1
Docente:
Fabian León (Ing. Ph.D.)
Introducción a MATLAB
Resumen
1. Introducción
Inicialmente pensado como herramienta de cálculo matemático, 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.
• Modelado y simulación.
• Desarrollo de algoritmos.
• Adquisición de datos.
• Desarrollo de aplicaciones.
Esto es una asignación de un vector columna que llevará el nombre “a” (a su derecha aparece
un comentario, indicado con “%”, ú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:
Una vez creado un objeto de MATLAB, éste pasa a formar parte del espacio de trabajo
ocupando una porción la memoria (workspace). Puedes consultar el listado de la variables
existentes en el espacio de trabajo mediante el comando whos (ver ayuda). A veces
necesitaremos eliminar objetos que ya no se utilicen para liberar memoria; 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
456
789
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 √-1. Como ejemplo podemos definir el vector fila v = [2 + 3i, -5i, 3]:
» v=[2+3i, -5i, 3]
» 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
» mat=[1 2 3; 4 5 6; 7 8 9];
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 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)
Para obtener los 3 últimos elementos del vector a podemos usar el siguiente comando:
» a((length(a)-2):end)
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. En Las
más usadas son: +, -, *. (Multiplicación de dos vectores punto a punto), /. (División de vectores
punto a punto). Si no se incluye el punto en * ó /, MATLAB realiza la operación de manera
matricial.
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:
» sqrt([4 2])
ans= 2.0000 1.4142
La ventaja de usar “scripts” es que nos permiten almacenar la secuencia de comandos que
hemos usado en nuestros cálculos, pudiendo replicarlos cuando queramos. Además, mediante
estos programas o “scripts” podemos explotar el lenguaje de programación incluido 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.
4. Gráficos en MATLAB
Visualizar la evolución temporal de sus señales es útil para estudiar el comportamiento
dinámico de un sistema. La operación más habitual es representar la señal de salida del
sistema frente a una señal de entrada. 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 generar gráficos es el comando plot.
y(t)=3⋅sen(5⋅t), parat≥0
La secuencia de comandos siguiente permite obtener un vector de muestras de la señal
sinusoidal correspondiente a los 10 primeros segundos de su evolución temporal, tomando
una muestra de la señal cada 0.01 segundos:
la variable resultante 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 los datos
en el vector Y puedes comprobar que el valor de la señal en t=7.3 segundos es -2.795. El vector
Y es una representación numérica de la señal sinusoidal, a partir de la cual podemos obtener
una representación gráfica de la señal mediante el comando plot:
» plot(T,Y);
El primer vector indica el eje horizontal de la gráfica, que a menudo será el vector de tiempos.
El segundo vector corresponde al eje vertical y contiene la información de la señal a
representar. Una vez obtenida la representación gráfica se puede emplear el zoom para
analizar con mayor detalle la señal representada. Comprueba, por ejemplo, que el valor de la
señal en t=7.3 segundos coincide con el obtenido a partir del vector.
El comando plot también permite especificar distintos tipos de trazados y colores. Consulta la
ayuda (help plot) para más información. En la figura 9 se enumeran otros comandos
relacionados con la representación gráfica de señales en MATLAB. Consulta su ayuda para
conocer su sintaxis.
5. Escribir funciones
Hemos visto que muchas operaciones en MATLAB son llamadas a funciones, y que la potencia
y versatilidad de MATLAB reside en que ofrece un amplio abanico de éstas (desde funciones
matemáticas básicas hasta funciones muy especializadas de cálculo estadístico, tratamiento de
señal, matemática financiera, etc). Además MATLAB permite al usuario programas sus propias
funciones.
Para crear una función en MATLAB tenemos que escribir la función en un script M-file. El
nombre del archivo será el nombre de la función, y el script tiene que incluir una cabecera
específica en su primera línea. La sintaxis de esa primera línea es la que sigue:
Esta cabecera define una función llamada funname que acepta entradas in1, in2, etc. y
devuelve las salidas out1, out2, etc. El nombre de la función debe coincidir con el nombre del
M-file.
Esta función toma un vector como entrada y devuelve la media de sus valores y su desviación
típica. Una vez definida la función y el archivo stat.m, podemos usarla desde la consola de
comandos, desde un script, o desde otra función, como si se tratase de una función propia de
MATLAB:
» x = [1 2 3 4 8 3 1 3] % Definimos un vector cualquiera
» [a,b]=stat(x) % Calculamos su media y desviación
Crear funciones propias permite compartirlas y reutilizar código de forma cómoda. (Cuando
los programas crecen en tamaño y complejidad, dividirlos en subrutinas es necesario para
mantener su legibilidad y que puedan depurarse errores.)
Actividad Práctica 1
GENERACIÓN Y GRAFICACIÓN DE SEÑALES DISCRETAS
OBJETIVOS
1. Comprender como se simulan señales discretas en el tiempo usando MATLAB®
3. Revisar las diferentes modalidades que existen para graficar una señal.
EXPERIMENTO
Genere un archivo .m nuevo. Escriba cada instrucción y ejecútela para ver su funcionamiento.
Al terminar la práctica podrá ejecutar todas las instrucciones y mostrar los resultados a su
profesor. Se le sugiere separe zonas de ejecución usando la instrucción pause.
SEÑALES DISCRETAS
Antes de continuar borre todos los valores que se encuentran almacenados en memoria:
>>clear
Esta instrucción también puede emplearse para borrar una sola variable. Por ejemplo:
>>clear w
>>clear x, v1, v2
Para generar una señal discreta en el tiempo x[n], primero se debe definir un vector índice
temporal 'n' apropiado. Por ejemplo, para producir una curva exponencial decreciente
x[n]=0.9n en el intervalo escriba:
>>n=[-10:10]
>>x=(0.9).^n;
Donde '.^ ' representa la operación de elevar 0.9 a cada uno de los elementos de n. A
continuación grafíquela.
>>stem(n,x)
>>w=(1.11).^n;
Grafíquela:
>>stem(n,w)
Genere y grafique la señal par x3[n]=0.9|n|
>>x3=(0.9).^abs(n);
>>stem(n,x3);
>>y=exp(j*pi*n/5-pi/3);
>>stem(n,y);
>>v1=cos(pi*n/5-pi/3);
>>v2=sin(pi*n/5+pi/4);
>>figure
>>subplot 211
>>stem(n,v1);
>>subplot 212
>>stem(n,v2);
Ejercicios
Calcule y grafique las siguientes señales
a) y[n]=ejπn/5-π/3
b) y[n]= -ejπn/5-π/3- cos(π*n/5-π/3)
c) y[n]= (ejπn/5-π/3- cos(π*n/5-π/3))/( sin(π*n/5+π/4))