Está en la página 1de 41

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD CULHUACÁN

Manual de prácticas
Laboratorio Virtual de Procesamiento Digital de Señales

Propósito.
El propósito de este laboratorio es introducir conceptos básicos de señales en tiempo discreto,
incluyendo aspectos asociados al muestreo, generación, manipulación, lectura/escritura de señales
de audio, tipos de gráficos, y análisis básico de señales en MATLAB.

Objetivo específico.
El objetivo principal es introducir al estudiante con las primeras herramientas de trabajo para el
procesamiento de señales discretas en el ambiente de programación de MATLAB de forma virtual.
Se espera que esta experiencia contribuya hacia la identificación de las propiedades de señales y
sistemas en tiempo discreto utilizando herramientas de análisis.

Matlab.
MATLAB (matrix laboratory) es un software con un gran número de prestaciones optimizadas para el
manejo de matrices y representaciones gráficas que además ofrece un entorno de desarrollo
integrado con un lenguaje de programación propio (lenguaje M).

Laboratorio Virtual

Las apps de MATLAB permiten a los estudiantes experimentar y aprender conceptos de ingeniería sin
centrarse en el código ni en habilidades específicas de software. Los estudiantes pueden interactuar
con apps en MATLAB o MATLAB Online, y las pueden compartir en un navegador con MATLAB Web
App Server.

https://matlab.mathworks.com/
PROCESAMIENTO DIGITAL DE SEÑALES

Objetivos de aprendizaje:

 Capacidad para la resolución de los problemas matemáticos que puedan plantearse en la


ingeniería.

 Capacidad de aplicar la teoría a la práctica: elección y uso de los métodos analíticos y de


modelización relevantes.

 Capacidad de organizar su propio trabajo de forma independiente

Resultados esperados
 Manejo / Programación de MATLAB en aplicaciones de procesado digital.

 Conocer y comprender los fundamentos matemáticos de las técnicas de PDS.

 Resolver problemas y aplicar algoritmos en diversas aplicaciones de PDS.

PRÁCTICAS
PRÁCTICA 0 “AMBIENTACIÓN EN MATLAB” ......................................................................................................... 3
PRÁCTICA 1 “INTRODUCCIÓN A MATLAB PARTE 1 “REPRESENTACIÓN GRÁFICA DE FUNCIONES BÁSICAS”. .... 14
PRÁCTICA 2 “INTRODUCCIÓN A MATLAB PARTE 2 “OPERACIONES BÁSICAS DE SEÑALES”. ............................. 26
PRÁCTICA 3 “INTRODUCCIÓN A MATLAB PARTE 3 “CORRELACIÓN Y CONVOLUCIÓN”. ................................... 35
PRÁCTICA 4 “PROPIEDADES DE LA TRANSFORMADA Z”. ....................................... Error! Bookmark not defined.
PRÁCTICA 5: FILTROS DIGITALES PARTE 1 “FILTROS FIR” ....................................... Error! Bookmark not defined.
PRÁCTICA 6: FILTROS DIGITALES PARTE 2 “FILTROS IIR” ........................................ Error! Bookmark not defined.
PRÁCTICA 7: TRANS. D. DE FOURIER (DFT), ALGORITMO RÁPIDO DE DFT (FFT) Y TRANS. DEL COSENO. ..... Error!
Bookmark not defined.
PRÁCTICA 8: REDUCCIÓN DE RUIDO, RESTAURACIÓN DE IMAGEN Y PROCESAMIENTO DE IMAGENES ...... Error!
Bookmark not defined.

Page 1 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 0

Page 2 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

INSTITUTO POLITÉCNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACÁN

LABORATORIO VIRTUAL DE PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 0 “AMBIENTACIÓN EN MATLAB”

1.-OBJETIVO

Introducir al alumno en el ambiente de MATLAB, ya que será usado de aquí en adelante en las
prácticas planteadas en este trabajo.

2.-MATERIAL

Software de MATLAB Pc o laptop

3.-MARCO TEÓRICO MATLAB

(MATrix LABoratory) es un software que ayuda en la realización de cálculos numéricos con vectores
y matrices. Uno de los mayores atractivos de este software es que se pueden realizar gráficos en dos
y tres dimensiones.

MATLAB es una de las aplicaciones de más ayuda en la actualidad. Debido a que MATLAB es un
software de alto nivel en el desarrollo de programas numéricos, no se requiere tener un alto
conocimiento respecto a lo que es un lenguaje de programación convencional.

4.-DESARROLLO

Page 3 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

A continuación se muestra la pantalla que aparecerá al dar doble click en el icono de MATLAB:

FIG. 0.1. VENTANA PRINCIPAL

En la Figura 0.2 se puede apreciar en la parte centra la ventana con el nombre Command Window,
en esta sub-ventana es donde se ejecutan los comandos programados en MATLAB.

FIG. 0.2. COMMAND WINDOW

Page 4 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Del lado izquierdo de la pantalla principal se puede apreciar la sub-ventana Current Folder, en donde
se muestran los ficheros del directorio activo.

FIG. 0.3. CURRENT FOLDER

En la parte superior derecha se encuentra la sub-ventana Workspace que contiene información sobre
todas las variables que se hayan definido en esta sesión y permite ver y modificar las matrices con
las que se está trabajando.

FIG. 0.4. WORKSPACE

Page 5 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

En la parte inferior derecha se encuentra la sub-ventana Command History, que muestra los últimos
comandos ejecutados en la Command Window, estos comandos se pueden volver a ejecutar
haciendo doble click sobre ellos.

FIG. 0.5. COMAND HISTORY

En la parte inferior izquierda de la pantalla aparece el botón Start, con una función análoga a la del
botón de Inicio de Windows, debido a que da acceso inmediato a ciertas capacidades del software

FIG. 0.6. START

4.1 HOJA DE TRABAJO

En la pantalla principal se da doble click sobre el icono de nombre New Script como se muestra en
la Figura 0.7

Page 6 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

FIG. 0.7. UBICANDO EL BOTON DE NEW SCRIPT

Inmediatamente se desplegará la siguiente ventana

FIG. 0.8. VENTANA PARA UN NUEVO SCRPIT

Que es donde se van a teclear los códigos que en las prácticas consecutivas se plantearan.

Una vez plasmado el código en la pantalla, en la parte superior izquierda el archivo que por default
lleva el título “Untitled” se mostrará ahora como “Untitled*” como se muestra en la Figura 0.9, esto
quiere decir que el archivo contiene información y necesita ser guardada.

Page 7 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

FIG. 0.9. UBICANDO EL NOMBRE DEL ARCHIVO POR DEFAULT

Nota: es importante mencionar que todos los comentarios respecto a la codificación, que no sean
parte del código, aparecerán de color verde en el script de trabajo.

4.2 GUARDAR ARCHIVO

Para poder ejecutar de manera satisfactoria el código antes plasmado es necesario guardar el
documento y para esto se va a recurrir a la parte superior izquierda y se debe dar doble click sobre
la palabra File como se muestra en la Figura 0.10 adicionalmente se va dar click en Save As

FIG. 0.10. FILE

Inmediatamente se desplegará una ventana en donde se va a poder seleccionar en que parte de la


computadora se guardara la información

Page 8 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

FIG. 0.11. UBICANDO ARCHIVO

En este caso se seleccionó el escritorio y adicionalmente en la parte que dice “Nombre” se asigna

el nombre que se desee al archivo y se presiona en donde dice “Guardar” como se muestra en la

Figura 0.12

FIG. 0.12. GUARDANDO ARCHIVO

Page 9 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

4.3 EJECUTAR EL CÓDIGO

Una vez almacenado el archivo se selecciona en la barra de herramienta sobre el icono de nombre

Run en la Figura 0.13 aparece con el nombre Run prueba.m en este caso dice prueba debido a que

es el nombre que se asignó al archivo, y “.m” es la extensión de los archivos MATLAB

FIG. 0.13. BOTON RUN

4.4 VISUALIZACIÓN DE RESULTADOS

Después de accionar el botón Run se ejecutará el código antes plasmado y se visualizará la Figura

0.14 y en donde se selecciona la palabra Change Folder

FIG. 0.14. PRESIONAR CHANGE FOLDER

Page 10 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Una vez realizado ese proceso se selecciona la ventana principal y en la parte de la sub-ventana
Command Window se ingresarán una serie de datos, en caso de que la codificación así lo requiera y
es tarea del usuario introducir esos datos de manera manual, como se muestra en la Figura 0.15.

FIG. 0.15 ESCRIBIENDO LO QUE SE INDICA

Una vez ya introducidos todos los datos como se muestra en la Figura 0.16

FIG. 0.16 DATOS INTRODUCIDOS

Page 11 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Se desplegarán los resultados en el mismo Comand Window o en una pantalla adicional de manera
gráfica si la codificación así lo indica como se muestra a continuación

FIG. 0.17. RESULTADOS

En este caso el resultado final era visualizar una gráfica, con esto se muestra cómo se trabaja en el
software de Matlab.

Page 12 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 1

Page 13 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

INSTITUTO POLITÉCNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACÁN

LABORATORIO VIRTUAL DE PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 1 INTRODUCCIÓN A MATLAB PARTE 1


“REPRESENTACIÓN GRÁFICA DE FUNCIONES BÁSICAS”.

1.-OBJETIVOS

El principal objetivo de este Trabajo Práctico es introducir el programa de cálculo científico Matlab.
El programa Matlab (el nombre corresponde a la abreviación de Matrix Laboratory) es una potente
herramienta de cálculo numérico y visualización de uso muy difundido a nivel mundial en los
ambientes industrial y académico en tareas de investigación, desarrollo y diseño en diversas áreas
tales como procesamiento de señales, control y comunicaciones.

En este Trabajo Práctico se pretende que el alumno

1.1 Se familiarice con los comandos Matlab que posibilitan

 la representación y cálculo matricial,


 la generación de señales a valores reales o complejos, y su visualización,
 la creación de programas Matlab (llamados M-files) en las modalidades function-files.
 el almacenamiento de los resultados de una sesión Matlab y el ingreso de datos en el espacio
de trabajo de Matlab,

1.2 Se familiarice con las operaciones de convolución y correlación de señales, y su


implementación en Matlab.

Page 14 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

2.-INTRODUCCIÓN

Matlab es un lenguaje de alto nivel para cálculo científico que integra, en un único ambiente
software, rutinas de cálculo, visualización y programación. El programa es de fácil uso ya que los
problemas se pueden formular usando una notación matemática estándar. La representación
básica de los datos en Matlab es en forma matricial, pero con la ventaja de que no es necesario
especificar las dimensiones de las matrices involucradas . Usos típicos de Matlab incluyen:

 Cálculo numérico.
 Desarrollo de algoritmos.
 Modelado, simulación y desarrollo de prototipos.
 Análisis y visualización de datos.
 Construcción de gráficas.
 Desarrollo de aplicaciones en distintas áreas científicas y tecnológicas.

Matlab es un sistema abierto al cual el usuario puede incorporar nuevas funciones para su uso
en aplicaciones particulares. Existen también extensiones de Matlab denominadas Toolboxes,
que son colecciones de funciones Matlab que permiten resolver problemas específicos en
diversas áreas de ciencia e ingeniería. Actualmente existen Toolboxes en áreas tales como
Control, Procesamiento de Señales, Identificación de Sistemas, Procesamiento de Imágenes,
Redes Neuronales, Lógica Difusa, Wavelets, etc..

En este primer Trabajo Práctico se introducen los comandos Matlab básicos que se emplearán
en los Trabajos de Laboratorio de la Asignatura. En esta práctica, que es de caracter tutorial, se
ilustra a través de ejemplos cómo pueden representarse señales en Tiempo Continuo (TC) y en
Tiempo Discreto (TD), y cómo las mismas pueden visualizarse mediante el uso de los comandos
plot, stem, y mesh. Así mismo se indica cómo pueden ingresarse datos en el espacio de trabajo
de Matlab, y cómo pueden almacenarse los resultados de una sesión Matlab. Se detallan también
es esta sección los comandos Matlab para control de flujo de programas, y se describen las
principales características de los denominados M-files en las modalidades function-file y
scriptfile.

Page 15 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

3.- COMANDOS BÁSICOS MATLAB

3.1. Ingreso de datos al espacio de trabajo

Matlab trabaja esencialmente con una única clase de objetos, nominalmente matrices, que pueden
ser a valores reales o complejos. Todas las variables en Matlab representan matrices. Una matriz 1 x
1 es interpretada como un escalar y matrices con una sola columna o una sola fila son interpretadas
como vectores (columna o fila respectivamente). Las matrices en Matlab pueden básicamente ser
ingresadas en las siguientes formas:

 Ingresadas como una lista de elementos. Por ejemplo, el comando:

asignará a la variable A la matriz 3 x 3 arriba indicada. El símbolo ‘,’ o un espacio, separa elementos
en una fila, en tanto que el símbolo ‘;’ indica el inicio de la siguiente fila.

 Generadas por líneas de comando u otras funciones de Matlab. Por ejemplo, el comando:

asignará a la variable B la matriz 3 x 2 arriba indicada, cuyos elementos son números aleatorios entre
0 y 1 con distribución uniforme.

Creadas en M-files. Por ejemplo, si se crea un archivo datos1.m cuyo contenido es:

y se ejecuta el comando

Page 16 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

entonces, en el espacio de trabajo quedarán definidas las variables C y D con los valores arriba
indicados.

 Ingresadas desde archivos de datos externos con el comando load. Por ejemplo, si
externamente se crea un archivo conteniendo:

y se lo salva con el nombre datos2.mat, entonces el comando

ingresará en el espacio de trabajo una variable, datos2, a la cual le asignará la matriz almacenada en
el archivo datos2.mat

3.2. Especificación de elementos de una matriz y de submatrices Un elemento particular de una


matriz o un vector se referencia en la forma matemática usual. Por ejemplo:

 A(1,2) denota el elemento de la primer fila y segunda columna de la matriz A,


 A(:,2) denota la segunda columna de A,
 A(3,:) denota la tercera fila de A, y
 A(2:3,1:4) denota la submatriz formada por las filas 2 y 3 y las columnas 1 a 4 de la matriz.

3.3. Operaciones elementales con matrices

Las siguientes operaciones básicas con matrices están disponibles en Matlab:

 + adición
 - substracción
 * multiplicación
 ^ potencia
 ‘ transpuesta conjugada .
 ’ transpuesta
 \ división por izquierda
 / división por derecha

Page 17 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Por supuesto, estas operaciones con matrices también se aplican a escalares (matrices de 1 x 1). Si
las dimensiones de las matrices no son compatibles para realizar la operación aparece un mensaje
de error, excepto en el caso de realizar una operación entre una matriz y un escalar, en cuyo caso se
realiza la operación entre cada elemento de la matriz y el escalar (para las operaciones de suma,
resta, multiplicación y división).

Es importante destacar que las operaciones arriba mencionadas son operaciones matriciales, si bien
las operaciones de suma y resta actúan, por definición, componente-a-componente. Puede lograrse
que las operaciones *, ^ , \ , y /, actúen también componente-a-componente, precediendo al símbolo
correspondiente por un punto ‘.’ . Por ejemplo, si queremos elevar cada elemento de una matriz al
cuadrado, tendríamos:

Los símbolos \ y / denotan la división por izquierda y por derecha, respectivamente. La interpretación
precisa de los comandos A\B, y A/B se puede obtener recurriendo al help-on line de Matlab, tipeando

>> help slash

Gráficas En Matlab

hay diversos comandos para la realización de gráficas en 2 y 3 dimensiones. En dos dimensiones, los
comandos básicos son las funciones plot y stem, en tanto que para gráficas en 3 dimensiones los
comandos básicos son mesh y surf. Los siguientes ejemplos ilustran la utilización de los comandos
plot, stem y mesh, para la representación de señales en una y dos dimensiones.

Page 18 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

4.- EJEMPLOS

Consideremos la siguiente señal analógica

x(t ) = sin( 2π 50t ) + 0.5sin(2π150t ),

y supongamos que se muestrea esta señal con una frecuencia Fs = 600 Hz (el lector interesado puede
verificar que la frecuencia de muestreo elegida cumple con el Teorema de Muestreo de Shannon, es
decir Fs > FN , donde FN es la tasa de muestreo de Nyquist). La señal en tiempo discreto resultante

x(n) se obtiene tomando los valores de x(t) en los instantes , donde Ts es el denominado
intervalo de muestreo. Es decir, en el caso del ejemplo se tiene:

2𝜋50 2𝜋150
𝑥(𝑛) = sin 𝑛 + 0.5sin ( 𝑛)
600 600

Las señales en tiempo continuo x(t) y en tiempo discreto x(n) pueden graficarse usando los comandos
Matlab plot y stem, respectivamente. La siguiente sucesión de comandos permite generar y graficar
estas señales.

t=0:0.0001:0.04;

x=sin(2*pi*50*t')+0.5*sin(2*p
i*150*t');

td=0:1/600:0.04;

xn=sin(2*pi*50*td')+0.5*sin(2
*pi*150*td');

plot(t,x)

hold on

stem(td,xn)

grid;

xlabel('Tiempo [seg]');

ylabel('x(t)');

Page 19 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Ejemplo 2:

En este ejemplo mostramos cómo pueden realizarse varias gráficas en una misma figura usando el
comando subplot.

Consideremos la siguiente señal exponencial compleja

𝑥(𝑛) = 𝑒
La siguiente sucesión de comandos Matlab permite generar la señal y graficar la parte real y la parte
imaginaria de la señal en una misma figura.

n=0:30;
x=exp(j*n/3);
subplot(211), stem(n,real(x));
xlabel('Indice "n"');title('Parte Real');
subplot(212), stem(n,imag(x));
xlabel('Indice "n"');title('Parte Imaginaria');

Page 20 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Ejemplo 3:

En este ejemplo ilustramos el uso del comando mesh para realizar gráficas en 3 dimensiones.
Consideremos la función sinc en dos dimensiones, definida como:

sin (𝑥 + 𝑦 )
𝑓(𝑥, 𝑦) =
𝑥 +𝑦
y supongamos que queremos graficar f (x, y) para x e y en el rango [−8,8]. La siguiente sucesión de
comandos Matlab permitirá realizar esta operación. La correspondiente salida gráfica está
representada en la Figura.

[x,y]=meshgrid(-8:0.5:8);
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
mesh(x,y,z,ones(size(z)));
xlabel('x'); ylabel('y'); zlabel('f(x,y)');
zlabel('f(x,y)');

Page 21 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

5.- DESARROLLAR:

1. Genere y grafique las siguientes secuencias:

𝑥1[𝑛] = 0.9𝛿[𝑛 − 5] 1 ≤ 𝑛 ≤ 20
𝑥2[𝑛] = 0.8𝛿[𝑛] − 226 ≤ 𝑛 ≤ 15
𝑥3[𝑛] = 1.5𝛿[𝑛 − 333] 300 ≤ 𝑛 ≤ 350
𝑥4[𝑛] = 4.5𝛿[𝑛 + 7] − 10 ≤ 𝑛 ≤ 0

2. En general se requieren tres parámetros para describir una función senoidal: la amplitud A,
la frecuencia ω0 y la fase de φ.

𝑥[𝑛] = 𝐴𝑠𝑖𝑛(𝜔 𝑛 + φ)

a) Genere y grafique las siguientes secuencias

𝑥1[𝑛] = sin (𝜋/17𝑛) 0 ≤ 𝑛 ≤ 25


𝑥2[𝑛] = sin (𝜋/17𝑛) − 15 ≤ 𝑛 ≤ 25
𝑥3[𝑛] = sin (3𝜋𝑛/2) − 10 ≤ 𝑛 ≤ 10
𝑥4[𝑛] = cos (𝜋/√23𝑛) 0 ≤ 𝑛 ≤ 50

3. Escriba una función en Matlab para la fórmula que sea discreta en tiempo y de duración
finita. La función deberá requerir de seis argumentos de entrada: tres para los parámetros
de la señal, dos para los tiempos de inicio y fin y uno para el muestreo. Puede comprobar su
correcto funcionamiento al generar una senoide con las siguientes definiciones:

 Frecuencia de la señal = 2500 Hz


 Fase inicial = 30 grados
 Amplitud = 100
 Frecuencia de muestreo = 12 KHz
 Tiempo de inicio = 0 seg
 Tiempo final = 10 m

Page 22 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Defina los siguientes conceptos:

 Señal analógica:

 Señal digital:

 Señal muestreada:

 Señal cuantizada:

Explique en que consiste los siguientes conceptos aplicados al procesamiento digital de señales.

 Expansión.

 Compresión.

 Convolución.

 Correlación.

Page 23 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

6.-BIBLIOGRAFÍA

 Tratamiento digital de la señal ( Proakis Manolakis ).

 Tratamiento de la señal en tiempo discreto.

 Microprocesadores PIC ( José Maria Angulo ).

 Programación en el lenguaje ensamblando para PC y compatibles.

 www.microchip.com

 www.tecnoeso.com

 www.geocities.com/charlytospage

 www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm·superio·superio

 Biblioteca de consulta Microsoft encarta 2003-2004

 Capítulo 20 Adquisición y Control automático ( www.yahoo.com )

 Adquisición de datos a través del puerto paralelo bidireccional ( Guillermo Ramos

R.) Revista Cekit.

Page 24 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 2

Page 25 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

INSTITUTO POLITÉCNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACÁN

LABORATORIO VIRTUAL DE PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 2 INTRODUCCIÓN A MATLAB PARTE 2


“OPERACIONES BÁSICAS SOBRE SEÑALES”.

La realización de esta práctica le permitirá al estudiante conocer y aplicar los conocimientos teóricos
vistos en clase sobre las operaciones básicas sobre señales en MATLAB.

1.- OBJETIVOS

• Realizar operaciones básicas sobre señales utilizando MATLAB.

• Conocer los comandos, algoritmos y funciones necesarias para realizar operaciones


básicas de señales en MATLAB.

• Identificar las operaciones a utilizar en cada una de las representaciones de una señal
en su expresión matemática.

Page 26 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

2.- INTRODUCCIÓN
Un aspecto de fundamental importancia en el estudio de señales es el uso de sistemas para procesar
o manipular señales. Este aspecto suele implicar una combinación de algunas operaciones básicas.
En particular, es posible identificar dos clases de operaciones: operaciones efectuadas sobre
variables dependientes y operaciones efectuadas sobre la variable independiente.

Operaciones efectuadas sobre variables dependientes

• Escalamiento de amplitud. Considere una señal 𝑥(𝑡). La señal 𝑦(𝑡) resultante del escalamiento de
amplitud aplicado a 𝑥(𝑡) se define mediante:

𝑦(𝑡)=𝑐∗ 𝑥(𝑡)

Donde c es el factor de escala. De acuerdo con lo anterior, el valor de y(t) se obtienes multiplicando
el valor correspondiente de 𝑥(𝑡) por el escalar 𝑐. De manera similar para señales en tiempo
discreto:

𝑦[𝑛]=𝑐∗ 𝑥[𝑛]

Suma. Considere dos señales 𝑥1(𝑡) y 𝑥2(𝑡). La señal 𝑦(𝑡) obtenida por la suma de estas dos señales
está definida por:

𝑦(𝑡)=𝑥1(𝑡)+ 𝑥2(𝑡)

De modo similar para señales en tiempo discreto:

𝑦[𝑛]=𝑥1[𝑛]+ 𝑥2[𝑛]

Page 27 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Multiplicación. La señal 𝑦(𝑡) resultante de la multiplicación de dos señales 𝑥1(𝑡) y 𝑥2(𝑡) está definida
por:

𝑦(𝑡)=𝑥1(𝑡)∗ 𝑥2(𝑡)

Es decir, en cada tiempo pre-escrito 𝑡 el valor de 𝑦(𝑡) está dado por el producto de los valores
correspondientes de 𝑥1(𝑡) y 𝑥2(𝑡). De manera similar para señales discretas:

𝑦[𝑛]=𝑥1[𝑛]∗ 𝑥2[𝑛]

Escalamiento de tiempo. Es la operación de compresión o expansión en el tiempo. La señal 𝑦(𝑡)


obtenida por el escalamiento de la variable independiente, tiempo 𝑡, por un factor 𝑎 se define
como:

𝑦(𝑡)=𝑥(𝑎 ∗ 𝑡)

Si 𝑎>1, la señal 𝑦(𝑡) es una versión comprimida de 𝑥(𝑡). Si, por otro lado, 0<𝑎<1, la señal 𝑦(𝑡) es una
versión expandida (alargada) de 𝑥(𝑡). Estas dos operaciones se ilustran en la figura.

Page 28 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

3.-Ejemplos
%% Escalamiento de Amplitud en Tiempo Continuo y Discreto
A = 5; %Factor de Escalamiento de amplitud
Fs = 10000; %Frecuencia de Muestreo
f = 0.1; %Frecuencia Fundamental Hz
T = 3*(1/f); %Número de Periodos a Graficar
t = 0:1/Fs:T-1/Fs; %Tiempo de Simulación
xt = A.*sin(2*pi*f.*t); %Generación de Señal
subplot(2,1,1),plot(t,xt),grid on,ylim([-A A]) %Grafica
xlabel('Tiempo (s)'),ylabel('Amplitud'), title('x(t)')
n = 0:T; %Vector de Tiempo Dicreto
xn = A.*sin(2*pi*f.*n); %Generación de Señal x[n]
subplot(2,1,2),stem(n,xn),grid on,ylim([-A A]) %Grafica
xlabel('Tiempo (n)'),ylabel('Amplitud'), title('x[n]')

Page 29 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

%% Suma de Señales en Tiempo Continuo y Discreto


A = 5; %Amplitud
Fs = 10000; %Frecuencia de Muestreo
f1 = 0.1; %Frecuencia Fundamental de la Señal x1(t) Hz
f2 = 0.2; %Frecuencia Fundamental de la Señal x2(t) Hz
t = 0:1/Fs:30; %Tiempo de Simulación
x1t = A.*sin(2*pi*f1.*t); %Generación de Señal x1(t)
x2t = A.*cos(2*pi*f2.*t); %Generación de Señal x2(t)
yt = x1t + x2t; %Señal suma y(t)=x1(t)+x2(t)
subplot(2,1,1),plot(t,yt),grid on %Grafica
xlabel('Tiempo (s)'),ylabel('Amplitud'),
title('y(t)=x1(t)+x2(t)')
n = 0:30; %Vector de Tiempo Dicreto
x1n = A.*sin(2*pi*f1.*n); %Generación de Señal x1[n]
x2n = A.*cos(2*pi*f2.*n); %Generación de Señal x2[n]
yn = x1n + x2n; %Señal suma y[n]=x1[n] + x2[n]
subplot(2,1,2),stem(n,yn),grid on %Grafica
xlabel('Tiempo (n)'),ylabel('Amplitud'),
title('y[n]=x1[n]+x2[n]')

Page 30 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

%% Multiplicación de Señales en Tiempo Continuo y


Discreto
clear all
A = 5; %Amplitud
Fs = 10000; %Frecuencia de Muestreo
f1 = 0.1; %Frecuencia Fundamental de la Señal x1(t) Hz
f2 = 0.2; %Frecuencia Fundamental de la Señal x2(t) Hz
t = 0:1/Fs:30; %Tiempo de Simulación
x1t = A.*sin(2*pi*f1.*t); %Generación de Señal x1(t)
x2t = A.*cos(2*pi*f2.*t); %Generación de Señal x2(t)
yt = x1t .* x2t; %Señal suma y(t)=x1(t)*x2(t)
subplot(2,1,1),plot(t,yt),grid on %Grafica
xlabel('Tiempo (s)'),ylabel('Amplitud'),
title('y(t)=x1(t)*x2(t)')
n = 0:30; %Vector de Tiempo Dicreto
x1n = A.*sin(2*pi*f1.*n); %Generación de Señal x1[n]
x2n = A.*cos(2*pi*f2.*n); %Generación de Señal x2[n]
yn = x1n .* x2n; %Señal suma y[n]=x1[n] * x2[n]
subplot(2,1,2),stem(n,yn),grid on %Grafica
xlabel('Tiempo (n)'),ylabel('Amplitud'),
title('y[n]=x1[n]*x2[n]')

Page 31 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

%% Escalamiento de Tiempo en Tiempo Continuo y Discreto


A = 5; %Amplitud
Fs = 200; %Frecuencia de Muestreo
f = 0.1; %Frecuencia fundamental Hz
T = 3*(1/f); %Número de Periodos a Graficar
duty = 50; %Ciclo útil
t = 0:1/Fs:T-1/Fs; %Variable t de la señal x(t)
xt = A.*square(2*pi*f*t,duty); %Generación de Señal
yt1 = A.*square(2*pi*f*2*t,duty); %Señal escalada en el tiempo en un factor de 2 y1(t)=x(2t);
yt2 = A.*square(2*pi*f*0.5*t,duty); %Señal escalada en el tiempo en un factor de 0.5
y2(t)=x(0.5t);
subplot(2,3,1),plot(t,xt),grid on, ylim([-A-1 A+1]) %Grafica
xlabel('Tiempo (s)'),ylabel('Amplitud'), title('Señal Original x(t)')
subplot(2,3,2),plot(t,yt1),grid on, ylim([-A-1 A+1]) %Grafica
xlabel('Tiempo (s)'),ylabel('Amplitud'), title('Señal Escalada en Tiempo y1(t)=x(2t)')
subplot(2,3,3),plot(t,yt2),grid on, ylim([-A-1 A+1]) %Grafica
xlabel('Tiempo (s)'),ylabel('Amplitud'), title('Señal Escalada en Tiempo y2(t)=x(2t)')
n = 0:T; %Vector de Tiempo Dicreto
xn = A.*square(2*pi*f*n,duty); %Generación de Señal x[n]
yn1 = A.*square(2*pi*f*2*n,duty); %Señal escalada en el tiempo en un factor de 2
y1[n]=x[2n]);
yn2 = A.*square(2*pi*f*0.5*n,duty); %Señal escalada en el tiempo en un factor de 0.5
y2[n]=x[0.5n]);
subplot(2,3,4),stem(n,xn),grid on, ylim([-A-1 A+1]) %Grafica
xlabel('Tiempo (n)'),ylabel('Amplitud'), title('y[n]=x[n]')
subplot(2,3,5),stem(n,yn1),grid on, ylim([-A-1 A+1]) %Grafica
xlabel('Tiempo (n)'),ylabel('Amplitud'), title('y1[n]=x[2n]')
subplot(2,3,6),stem(n,yn2),grid on, ylim([-A-1 A+1]) %Grafica
xlabel('Tiempo (n)'),ylabel('Amplitud'), title('y[n]=x[0.5n]')

Page 32 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

4.-Desarrollar
Resuelva de forma teórica los siguientes ejercicios:

a. Para la señal 𝑥(𝑡) dada como:

grafique y halle las expresiones analíticas para las siguientes funciones:

b. Para la señal de tiempo discreto mostrada en la figura, dibuje cada una de las señales
siguientes:

Resuelva en MATLAB

1- A partir de los siguientes datos genere la señal en tiempo continuo, la reflexión de la señal
y(t)=x(-t), la señal en tiempo discreto y la reflexión y(n)=x(-n).

Señal Diente de Sierra Fs = 200; t = -5:1/Fs:5; n = -5:5;

2- A partir de los siguientes datos genere la señal original, el desplazamiento de la señal


y1(t)=x(t+2), el desplazamiento de la señal y2(t)=x(t-2), la señal en tiempo discreto, el
desplazamiento de la señal y1(n)=x(n+2) y el desplazamiento de la señal y2(n)=x(n-2)

Señal senoidal xt =A.*sin(2*pi*f.*t);

Datos: A = 5, Fs = 10000, f = 0.1, T = 3*(1/f), t = 0:1/Fs:T-1/Fs, n = 0:T

Page 33 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 3

Page 34 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

INSTITUTO POLITÉCNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACÁN

LABORATORIO VIRTUAL DE PROCESAMIENTO DIGITAL DE SEÑALES

PRÁCTICA 3 INTRODUCCIÓN A MATLAB PARTE 3


“CORRELACIÓN Y CONVOLUCIÓN”.

1.- OBJETIVO
El alumno utilizará los conceptos de la Convolución discreta y de la Correlación en el
procesamiento de señales adquiridas.

2.-INTRODUCCIÓN
Dos operaciones importantes para el entendimiento de los sistemas de procesamiento digital de
señales son la Convolución y la Correlación.

Convolución

Considere el sistema lineal discreto e invariante en el tiempo mostrado en la figura. La entrada


discreta está dada por la señal x(n), mientras que la salida es y(n). Es conocido que al aplicarle como
entrada a este sistema un impulso unitario discreto responde con una salida dada por la secuencia
h(n).

Entonces, la salida y(n) correspondiente a una entrada discreta arbitraria x(n) está dada por:

Page 35 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

A esta fórmula se le conoce como Sumatoria de Convolución. Se dice que x(n) y h(n) se convoluciona
para dar la salida y(n) y para esto se usa la notación abreviada.

Si la señal x(n) tiene una longitud finita N, mientras que h(n) tiene una longitud M, entonces la
salida correspondiente y(n) tendrá una longitud N+M-1.

Las operaciones para realizar la Convolución son las siguientes:

 1.Los valores de h(n) son reflejados (escritos en orden inverso).

 2.El primer valor de y(n) es la multiplicación de los primeros valores de x(n) y h(n).

 3.x(n) es “corrido” un lugar, de manera que y(2) es igual a x(1)*h(2)+x(2)*h(1)

 4.Sucesivamente se corre x(n) una posición a la vez, hasta terminar con todos los valores,
de forma que y(N+M-1) =x(N)*h(M).

Page 36 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

Correlación

Si se tienen dos señales discretas x(n) y y(n), la Correlación Cruzada, o simplemente Correlación,
determina el grado de semejanza entre ellas, y está dada por

Para cada valor del índice l, que funciona como un corrimiento, se obtiene un valor que puede ser
positivo o negativo. Este valor tendrá una magnitud pequeña si no hay una semejanza entre la señal
x(n) y la señal desplazada y(n-l), o bien será un valor elevado si hay un grado de semejanza
considerable.

Un caso particular es aquel en el que se tiene una sola señal x(n) y se desea saber el grado de
semejanza entre diferentes secciones de la misma. En este caso la Autocorrelaciónse define como

Relación con los Temas del Programa de Clase:

Respuesta de Sistemas Lineales Discretos como introducción para analizar el tema de Filtros
Discretos.

3.- Ejemplos: y(n)=sen (n) 0<n<50

Page 37 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

subplot(2,2,1); subplot(2,2,2);
n=0:50; x=sin(n);
x=sin(n); stem(2*n,x,'color','b')
stem(n,x,'color','r') xlim([-2.5 12.5])
xlim([-2 6.5]) ylim([-1.5 1.5])
ylim([-1.5 1.5]) ax = gca;
ax = gca; ax.XAxisLocation = 'origin';
ax.XAxisLocation = 'origin'; ax.YAxisLocation = 'origin';
ax.YAxisLocation = 'origin'; grid on
grid on grid minor
grid minor title('Escalamiento en el tiempo
title('Señal original y(n)=x(n/2)')
y(n)=x(n)=sen(n)')

subplot(2,2,3); subplot(2,2,4);
x=sin(n); x=sin(n);
stem(4*n,x,'color','green') stem(n/2,x,'color','black')
xlim([-5 25]) xlim([-1 3.5])
ylim([-1.5 1.5]) ylim([-1.5 1.5])
ax = gca; ax = gca;
ax.XAxisLocation = 'origin'; ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin'; ax.YAxisLocation = 'origin';
grid on grid on
grid minor grid minor
title('Escalamiento en el tiempo title('Escalamiento en el tiempo
y(n)=x(n/4)') y(n)=x(2n)')

Ejemplo 2 : Aplicación de la convolución y correlación de las señales

x1(n)=cos (n) 0<n<50 y x2(n)= sin (n) 0<n<50

Page 38 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

subplot(2,2,1); subplot(2,2,2);
stem(x1,'color','r') stem(x2,'color','b')
xlim([-5 55]) xlim([-5 55])
ylim([-1.5 1.5]) ylim([-1.5 1.5])
ax = gca; ax = gca;
ax.XAxisLocation = 'origin'; ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin'; ax.YAxisLocation = 'origin';
grid on … grid on
grid minor grid minor
title('Cos(n)') title('Sin (n)')

subplot(2,2,3); subplot(2,2,4);
Convolucion=conv(x1,x2) Correlacion=xcorr(x1,x2)
stem(Convolucion,'color','black') stem(Correlacion,'color','black')
xlim([-5 100]) xlim([-5 100])
ylim([-25 25]) ylim([-25 25])
ax = gca; ax = gca;
ax.XAxisLocation = 'origin'; ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin'; ax.YAxisLocation = 'origin';
grid on grid on
grid minor grid minor
title('Convolución ') title('Correlación cruzada')

Page 39 of 41
PROCESAMIENTO DIGITAL DE SEÑALES

4.- Desarrollar
Con las secuencias siguientes aplique los comandos de compresión, expansión, convolución y
correlación a cada una de ellas en el mismo formato visto en los ejemplos.

𝑥1[𝑛] = sin (𝜋/17𝑛) 0 ≤ 𝑛 ≤ 25


𝑥2[𝑛] = sin (𝜋/17𝑛) − 15 ≤ 𝑛 ≤ 25
𝑥3[𝑛] = sin (3𝜋𝑛/2) − 10 ≤ 𝑛 ≤ 10
𝑥4[𝑛] = cos (𝜋/√23𝑛) 0 ≤ 𝑛 ≤ 50
Ejemplo:

Parte Teórica
I. Convolución

1.Realice manualmente las operaciones para obtener la Convolución de:

x(n)={2,2,-1,-1,1,1}h(n)={4,5,3, 2, 1}

2.Confirme este resultado en Matlab, de la siguiente manera:

x=[2,2,-1,-1,1,1];
h=[4,5,3,2,1];
y=conv(x, h)

II. Correlación Cruzada

1.Realice manualmente las operaciones para obtener la Correlación Cruzada de


x(n)={..., 0, 5, 3 ,5, -3, 1, -2, 0, -4, -2, 0, ...}↑y(n)={..., 0, 2, -1, 2, -3, 6, 5, 6, -2. 1, -3, 0, ...}
2.Confirme este resultado en Matlab, de la siguiente manera:
y=xcorr(x, y)

Page 40 of 41

También podría gustarte