Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERÍA
PROGRAMA DE INGENIERÍA ELECTRÓNICA
ANÁLISIS DE SEÑALES
Laboratorio 1:
Señales en Tiempo Discreto con Matlab
OBSERVACION: Para la realización del Informe del Laboratorio utilice la
plantilla de la Bitácora Google Docs (Drive correo institucional) y siga las
instrucciones dadas en el documento.
CONTENIDO:
1. Introducción
2. Objetivos
3. Representación de señales
4. Señales básicas
5. Señales multicanal (matrices)
6. Combinación de funciones sinusoidales
7. Energía y potencia de señales
8. Mini tutorial de SIMULINK
DESARROLLO:
1. Introducción
Cómo inicio del laboratorio de análisis de señales y cómo refuerzo de la primera
meta de aprendizaje del curso (manejo de las señales en tiempo discreto) se ilustrarán
algunas propiedades de las señales en tiempo-discreto diferenciándolas de las señales
de tiempo continúo usando MATLAB. Una señal en tiempo-continuo toma valores en
todo punto en el tiempo, mientras que una señal en el tiempo-discreto está definida
solamente en valores enteros de la variable “tiempo”. Sin embargo, mientras una señal
en tiempo-discreto puede ser fácilmente guardada y procesada en un computador, es
imposible guardar los valores de una señal en tiempo continuo para todos los puntos a
lo largo de una línea real. En los computadores realmente no se puede almacenar ni
mostrar una señal continua pero se hace una aproximación asignando valores de la señal
a intervalos de tiempo pequeños muy inferiores a la unidad lo cual en el fondo es una
restricción de tiempo, y además, también se hace la restricción de los posibles valores
que puede tener en amplitud cuantizandola de acuerdo a las posibles clases de variables
permitidas en el software (UINT8,16,32, SINT8,16,32, LOGICAL, SINGLE DOUBLE), y se
grafican uniendo los puntos con líneas rectas dando la impresión de infinitos valores. En
las señales discretas se usan las mismas clases de variables pero la diferencia es que
cada valor de amplitud corresponde a un intervalo de tiempo discreto entero y su gráfica
muestra espacios vacíos entre muestras.
2. Objetivos
• Recordar la generación, la representación y el manejo de señales
continuas y discretas
• Realizar algunas operaciones entre señales
• Utilizar formas básicas de graficación, programación
• Conocer los fundamentos de SIMULINK
3. Representación de señales
>>help plot
En la ventana de Matlab “Command Window”. Puede hacer una búsqueda por palabras
clave de un tópico en inglés usando el siguiente comando:
>>lookfor image
Donde se arroja resultados con un listado de todas las posibles opciones que pueden
ayudar a encontrar una función específica. Pero realmente la mejor herramienta offline
para obtener ayuda corresponde a la ayuda del producto como tal usando el icono de
ayuda o también siguiendo el menú o presionando la tecla F1. Allí se encuentran demos
y ejemplos de uso muy completos para aprender a usar funciones nativas de Matlab así
como las funciones de los toolboxes. La ayuda Online es muy efectiva y permite entrar
en contacto con programadores nuevos y expertos (Comunidad), conseguir programas
de uso gratuito y foros de todo tipo de aplicación sobre Matlab. La página principal que
ofrece éste soporte es www.mathworks.com y se accede en el menú ayuda en el enlace
de recursos web (web resources) y el intercambio de archivos (Matlab file exchange).
Informe de laboratorio:
a = [1 2 3]
Crea una matriz nombrada “a” con dimensiones de 1 × 3 (fila x columna). La variable “a”
es almacenada en lo que es llamado el espacio de trabajo de Matlab “Matlab
workspace”. Alternativamente, la operación
b = a’
Guarda la transpuesta compleja de “a” en el vector “b”. En este caso, “b” es un vector 3
× 1.
Como cada elemento en Matlab es una matriz, la operación c = a*b, Calcula el producto
de la matriz de “a” y “b” para generar un valor escalar “c” de 14
A menudo, se quiere aplicar una operación a cada elemento del vector. Por ejemplo, se
puede querer elevar al cuadrado cada elemento de “a”. En este caso, se puede usar el
comando siguiente:
c = a.*a
El símbolo .* le dice a Matlab que la multiplicación debe ser aplicada a cada elemento
de “a”. Entonces la operación .* no es una operación matricial. La convención trabaja
con muchos comandos tales como la división y la potenciación respectivamente, ./, .^.
El resultado entonces es un vector “c” 1x3
Para la creación de los vectores de tiempo tanto para emular señales continuas como
señales discretas:
Informe de laboratorio:
Ahora el siguiente programa calcula una señal sinusoidal con una duración de
cuatro períodos con desfase.
Como primera asignación se pide crear un nuevo script donde se generen tres señales
continuas con frecuencia de 4KHz, y que se visualicen dos periodos. Las primeras dos
señales, x1(t), y x2(t) son descritas por las siguientes expresiones
A1 = su edad/10
A2 = 1.2 A1
37.2
𝑡𝑚1 = ( )𝑇
𝑀
41.3
𝑡𝑚2 = −( )𝑇
𝐷
Realice una segunda figura con las tres gráficas en cuadros diferentes pero en la misma
figura usando los comandos subplot.
Realice los cálculos de los desfases en radianes de las tres señales, con una nueva figura
reescriba y grafique las señales en función del desfase en radianes.
𝑥(𝑡) = 𝐴𝑐𝑜𝑠(2𝜋(4000)𝑡 − 𝜑)
Reescriba las mismas señales en forma exponencial (fasorial) y grafíquelas en una nueva
figura,
Como segunda asignación se solicita que realicen el script y grafiquen las señales
mostradas a continuación en los intervalos de tiempo solicitados con un tamaño de paso
apropiado (en el caso de señales complejas se debe graficar por aparte la parte real,
imaginaria, la magnitud y la fase):
3.1. 𝑥(𝑡) = 3𝑒 0.4𝑡 − 2 ≤ 𝑡 ≤ 5
3.2. 𝑦(𝑡) = 2𝑒 −0.9𝑡 − 2 ≤ 𝑡 ≤ 5
3.3. 𝑦(𝑡) = 2𝑒 𝑗𝜋𝑡+𝜋/3 𝑒𝑛𝑢𝑛𝑝𝑒𝑟𝑖𝑜𝑑𝑜
3.4. 𝑥(𝑡) = 2𝑒 𝑗𝜋𝑡 3𝑒 𝑗2𝜋𝑡 , 0 ≤ 𝑡 ≤ 5
3.5. 𝑦(𝑡) = 6𝑒 𝑗3𝜋𝑡 , 0 ≤ 𝑡 ≤ 5
Informe de laboratorio:
Anexe los procedimientos, agregue el código generado para cada uno de los ítems,
tareas solicitadas y los resultados del procedimiento en el informe, es decir, incluya
cada una de las gráficas y resultados si se solicitan.
Informe de laboratorio:
Pese a que MATLAB no fue pensado para éste tipo de programación, si lo soporta. No
todas las veces es posible, pero usualmente los ciclos se pueden reemplazar por
operaciones entre matrices como se muestra en algunos ejemplos:
% Uso de if
a = [1 2 3];
if(a <= 2),
b = 1;
elseif(a >=4)
b = 2;
else
b = 3;
end;
% Uso de if-elesif-else
A=5;
B=3;
if A==B
disp('A=B')
elseif A>B
disp('A mayor que B')
else
disp('A menor que B')
end
% Uso de switch-case
A=-8;
switch A
case 0
disp('A es 0')
case 1
disp('A es 1')
otherwise
disp('A es distinto de 0 y 1')
end
Informe de laboratorio:
Realice los procedimientos, No anexe ningún resultado de éste apartado en el
informe
El comando más comúnmente usados para graficar es plot, el cual crea gráficas lineales
de vectores y matrices; plot(t,y) grafica el vector t sobre el eje-x versus el vector y sobre
el eje-y. La gráfica tiene opciones como el ancho de la línea, el tipo de línea, el color de
la línea entre otras de la curva que se está graficando con el comando plot(t,y,'option').
Las opciones de tipo de línea es por defecto la línea sólida '-' (default), '--' línea
interrumpida, '-.' Línea punteada, ':'. Los puntos en y pueden dejarse sin conectar y
delinearse con una variedad de símbolos: + . * o x. Los siguientes colores son ejemplos
de las opciones disponibles (entre otros):
% r Red (rojo)
% b Blue (azul)
% g Green (verde)
% w White (Blanco)
% k Black (negro)
Por ejemplo, plot(t,y,'--') usa una línea punteada con guiones, plot(t,y,'*') usa
* en todos los puntos definidos en t y y sin conectar los puntos, y plot(t,y,'g') usa
una línea solida verde. Las opciones pueden ser usadas a la vez, por ejemplo,
plot(t,y,'g:') grafica una línea verde punteada. Para graficar dos o más gráficas
sobre el mismo conjunto de ejes, use el comando plot(t1,y1,t2,y2), lo cual grafica
y1 versus t1 y y2 versus t2.
Los comandos para etiquetar los ejes y darle título a la gráfica son:
xlabel('tiempo (seg)')
ylabel('respuesta a la función paso')
title('Mi gráfica')
Finalmente, para adicionar una grilla a la gráfica y así facilitar la lectura de sus valores.
Se debe introducir el comando grid. Un problema que se puede encontrar muy seguido
cuando se está graficando es que MATLAB escalará los ejes en una forma automática
que puede ser diferente a como se quiere que aparezca. Se puede sobreescribir la
autoescala de los ejes usando los comandos de configuración de eje siguiente:
axis([xmin xmax ymin ymax]);
Donde xmin, xmax, ymin, y ymax son números correspondiente a los límites deseados
de los ejes. Para retornar a la escala automática, simplemente se escribe el comando
axis. Para señales en tiempo discreto, se usa el comando stem el cual grafica cada punto
con una pequeño círculo y una línea recta conocido como lollypop. Para graficar y(n)
versus n, se escribe stem(n,y). El comando puede ser modificado graficando los círculos
rellenos. Específicamente, la tercera línea en stem
n=1:20;
y=sin(pi/8*n);
h = stem(n,y,'o');
Ahora, realice las siguientes figuras, incluyendo las leyendas, etiquetas, título y tipos de gráficas
teniendo en cuenta el color:
Cuando se usa MATLAB, Ud puede querer comúnmente cerrar un programa pero salvar
los vectores y matrices que se han creado con los valores que haya definido en un
momento dado. Para guardar el workspace escriba el comando:
>>save nombredelArchivo
Donde " nombredelArchivo" es el nombre con el que guardará el archivo .mat, para
recuperar las variables escriba el comando:
Informe de laboratorio:
4. Señales básicas
En esta sección se realizarán algunos programas de generación y graficado de señales
básicas y se plantearán algunas preguntas y ejercicios para retar su conocimiento.
EL IMPULSO UNITARIO
Para una señal de 20 datos
IMPULSO= [zeros(9,1);1; zeros(10,1)];
O también utilizando operadores lógicos
N=-10:10;
IMPULSO1=(n==0);
Formas de Graficarlo
plot(IMPULSO,'.');
figure
stem(IMPULSO);
figure
stem(n,IMPULSO1);
n=-10:10;
ESCALON1= (n>=0);
stem(n, ESCALON1)
LA RAMPA
n=(-9:1:10)';
RAMPA =[zeros(9,1); n(10:20)];
plot(n,RAMPA,'.');
figure
stem(n,RAMPA);
Informe de laboratorio:
Anexe los procedimientos, tareas solicitadas y los resultados del procedimiento en
el informe.
Informe de laboratorio:
Informe de laboratorio:
Simulink provee una completa librería que permite seleccionar bloques de librerías de
bloques estándares (Simulink Blocks) y un editor gráfico que permite interconectarlos.
Se puede modelar prácticamente cualquier sistema dinámico virtualmente simplemente
seleccionando e interconectando los bloques Simulink apropiados. Un diagrama de
bloques Simulink es una forma de caracterizar completamente sistemas dinámicos.
Cada bloque representa un sistema dinámico elemental que produce una salida, ya sea
continua o discreta.
Una vez encontrado el bloque, para anexarlo a su modelo, basta con arrastrarlo de la
librería y soltarlo (Ubicándolo adecuadamente), en el editor en blanco recién creado (ver
figura 4).
Si ustedes notan, todos los bloques según su función tienen una(s) flecha(s) entrando, y
otra(s) flechas(s) saliendo para interconectar el bloque con los demás bloques en la
estructura (ver figura 5). Hay dos formas de interconectar los bloques, haciendo click en
un el puerto de salida que quiero conectar, sostener el click y soltarlo encima del puerto
de entrada del siguiente bloque, o hacer click en el bloque fuente, presionar la tecla
CTRL, mantenerla presionada y hacer click en el bloque destino. En el caso de querer
conectar una línea con un bloque, se debe seleccionar la línea origen, luego hacer click
derecho y sostener con el ratón sobre la línea y al mismo tiempo presionar y sostener
la tecla CTRL (debe aparecer una línea punteada) y luego soltar el click sobre el puerto
de entrada del bloque destino. Una vez interconectados los bloques (deberá quedar
como la figura 2), se debe guardar el proyecto en la carpeta activa del directorio actual
de Matlab.
Por último, haciendo click en la flecha verde al lado del tiempo de simulación de parada
se ejecuta el modelo.
Por último, gracias por el empeño puesto en la solución de los problemas, por no copiar
los resultados y por dedicar el tiempo necesario para lograr los procedimientos
solicitados. Por favor incluir las observaciones que consideren clave en la práctica y una
frase final que destaque los principales resultados de la práctica en las conclusiones.
Informe de laboratorio:
%------------------------------------------
% DAQ NI USB-6211
%------------------------------------------
clear all
close all
clc
8.9. En el código creado, parametrice (cambie) para que la señal a adquirir tenga las
siguientes características:
• Tiempo de Adquisición = 2 segundos. (Timeduration)
• Frecuencia de Muestreo 1Khz.
• La señal a adquirir debe ser tomada del canal analógico 1.
8.9.1. Para verificar si el código esta bien implementado, abra nuevamente la aplicación
“Measurement & Automation Explorer”, haga click sobre “Devices and Interfaces”
y haga click botón izquierdo y seleccione “Create New”, se desplegará una nueva
pantalla y seleccione “Simulated NI-DAQmx Device or Modular Instrument”, en la
ventana de search escriba “USB-6211” copie el nombre del nuevo dispositivo y
presione “Ok”. En el programa de arriba cambie el nombre del dispositivo. Este
procedimiento le podrá activar un simulador de la tarjeta de adquisición para que
pueda probar su código antes de conectar la señal real.
8.9.2. Haga click sobre el nombre de su dispositivo “DevXX”, seleccione la pestaña “Test
Panels” y seleccione en “Input Configuration” RSE. Cierre la pantalla. Cierre la
aplicación
8.9.3. Ejecute el código transcrito en MatLab y compruebe su funcionamiento.
8.10. En el generador de señales configure para obtener una señal cuadrada con 50%
de duty-cycle con amplitud A=5V, y frecuencia de 200Hz. Verifique en el osciloscopio
que la señal se haya configurado correctamente.
8.11. Conecte la señal a la entrada correspondiente en la tarjeta de adquisición y
verifique su funcionamiento. Anote sus observaciones, cambie las formas de onda.
8.12. Incluya el código generado y fotos del montaje realizado.
BIBLIOGRAFÍA
Signals and Systems, an introduction to analog and digital signal processing, Alan
Oppenheim. (1983). Prentice-Hall
Signal and Systems - General. B. Girod R. Rabenstein A. Stenger – Jhon Wiley & Sons.
(2001).
Digital Signal Processing. Schaum's Outline. Mcgraw-Hill (1999).
Digital Image Processing Using Matlab. González.
Digital Signal processing with applications, VISE, PURDUE University.
Digital Signal Processing using Matlab v4. Ingle and Proakis. ()PWS publishing Company.
Using Simulink, Version 5. The Math Works. 2002.