L1a Convolucion Señales Discretas
L1a Convolucion Señales Discretas
L1a Convolucion Señales Discretas
1a – Convolución 1
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
FACULTAD DE INGENIERIA
CONTROL DIGITAL
INSTRUCCIONES
Las técnicas y herramientas didácticas que se empleen en los laboratorios tiene como finalidad el
refuerzo, la conformación y ejecución de los diferentes aspectos que hacen parte de la asignatura.
De forma que el alumno desarrolle un pensamiento flexible, dinámico, audaz, independiente,
persistente, divergente y original en su formación como profesional.
OBJETIVOS
Objetivos Específicos
Conocer los comandos, algoritmos y funciones necesarias para realizar la convolución entre
señales, en tiempo discreto, en MATLAB®.
Identificar las características de la convolución en discreto.
REFERENCIAS
SESION DE SIMULACIÓN
1. MARCO TEÓRICO
La convolución representa la respuesta al impulso para sistemas LTI, donde el término “respuesta
al impulso” se refiere a la salida del sistema LTI debido a una entrada de impulso aplicada en el
tiempo . La respuesta al impulso caracteriza por completo el comportamiento de cualquier
sistema LTI. Esto es una propiedad básica de todos los sistemas LTI.
Esta operación de convolución, aunque difícil de calcular, incluso en casos simples, tiene un valor
teórico significativo. Nos permite no sólo determinar la respuesta del sistema para casos muy
Considere un sistema lineal en tiempo discreto y una entrada arbitraria a ese sistema.
Cualquier señal arbitraria puede expresarse como una combinación lineal de muestras
desplazadas en la forma:
Usando la propiedad de superposición de los sistemas lineales, se deduce que la salida puede
expresarse como una combinación lineal de las respuestas del sistema cuando la excitación está
constituida por muestras unitarias desplazadas en el tiempo. Entonces, para un sistema LTI:
Nota: Es importante aclarar que no siempre es necesario, en el procedimiento descrito, graficar las
funciones para identificar los intervalos de la convolución.
Figura 2. Convolución como proceso de deslizar una señal reflejada más allá de otra: .
La respuesta al impulso del sistema. La señal de entrada . La entrada descrita
como una función de . La respuesta al impulso reflejada y recorrida en el tiempo
descrita como una función de . La señal producto para el intervalo de corrimientos en el
tiempo . La señal producto para el intervalo de corrimientos en el tiempo
. La señal producto para el intervalo de corrimientos en el tiempo
. La salida .
2. TRABAJO PREVIO
b. Halle la convolución para cada uno de los dos pares de secuencias finitas
dadas:
Sintaxis
conv(u,v,shape)
convnum(X,Y,DT,TY)
convplot(X,H,TX,TH,TS)
Descripción
La función conv permite calcular la convolución de las señales u y v; el parámetro shape es
opcional y su uso no es relevante para el análisis objeto de esta práctica.
Es importante recordar que MATLAB® no realiza cálculos de forma continua, es otras palabras,
todos los cálculos realizados por MATLAB® se operan de forma discreta. Por otra parte, el
comando convnum realiza la convolución numérica de las señales X y Y en tiempo discreto. El
parámetro DT es el intervalo de muestreo, por defecto tiene un valor de 1; TY es opcional y su uso
no es objeto de estudio en esta práctica.
Finalmente, está el comando convplot de la caja de herramientas “adsp”. Este comando realiza una
animación que permite visualizar el proceso de convolución entre dos señales X y H, tanto en
tiempo continuo como en tiempo discreto; sus parámetros TX y TH son las duraciones de tiempo
para las señales X y H respectivamente, y están en la forma [Tmin Tmax]. TS es el intervalo de
muestreo y es opcional, por lo cual, si no se especifica por defecto es (MayorDuracion)/50.
Nota: Se puede obtener los mismos resultados de la función convnum usando la rutina conv con la
siguiente sintaxis: ts*conv(u,v), donde ts es el intervalo de muestreo. Las funciones convnum y
conv no dan el principio o duración de la convolución, por lo tanto, para graficar sus resultados se
debe conocer el intervalo en se extiende la convolución.
Ejemplo 1: Cálculo de la convolución en tiempo discreto
Calcule la convolución entre las señales: y .
Comandos
%% Convolución en Tiempo Discreto
n = 0:20; %Variable de tiempo discreto
x = (0.8).^n; %Generación de la señal x[n]
h = (0.4).^n; %Generación de la señal h[n]
y1 = conv(x,h); %Calcula la convolución y[n]=x[n]*h[n]
y2 = convnum(x,h); %Calcula la convolución con ADSP Toolbox
ny = 0:40; %Variable de tiempo para la convolución y[n]
subplot(2,2,1),stem(n,x),grid on
xlabel('Tiempo (s)'),ylabel('Amplitud'),title('Señal Original x[n]')
subplot(2,2,2),stem(n,h),grid on
xlabel('Tiempo (s)'),ylabel('Amplitud'),title('Señal Original h[n]')
subplot(2,2,3),stem(ny,y1),grid on
xlabel('Tiempo (s)'),ylabel('Amplitud'),title('Señal de Convolución y[n]=x[n]*h[n]')
subplot(2,2,4),stem(ny,y2),grid on
xlabel('Tiempo (s)'),ylabel('Amplitud'),title('Señal de Convolución con ADSP Toolbox y[n]=x[n]*h[n]')
Gráfica
Para ello, se tomará como base el código de la función conv_322.m desarrollada en 1998 por CDR Thad Welch y que
está disponible en la página oficial de MATLAB® como una contribución de Marco Suarez. Si se quiere ver su código
original, visitar el enlace:
https://www.mathworks.com/matlabcentral/fileexchange/47088-conv-322-m?focused=3823053&tab=function
Comandos
Vamos a crear una función llamada ConvDis que permitirá calcular la convolución entre señales discretas. Para ello,
copie las siguientes sentencias en un fichero nuevo, desde el editor de MATLAB®, y guárdelo con el nombre
ConvDis.m:
function ConvDis(x,x_start,h,h_start)
%""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
% PROPÓSITO:
% Calcular numéricamente y graficar la convolución suma de dos señales.
% y[n] = x[n]*h[n].
% La entrada, x[n], y la respuesta al impulso, h[n], serán graficadas, así
% como la señal de convolución, y[n].
%
% USO:
% ConvCon(x,x_start,h,h_start)
%
% ARGUMENTOS DE ENTRADA:
% x ---------> Versión de la señal de entrada.
% x_start ---> Tiempo de inicio de la señal de entrada en segundos
% h ---------> Versión de la señal respuesta al impulso.
% h_start ---> Tiempo de inicio de la señal de respuesta al impulso en
% segundos.
%
% ARGUMENTOS DE SALIDA: NO HAY
%
y = conv(x,h);
ymin = min([x h y])-1;
ymax = max([x h y])+1;
x_time=x_start+(0:length(x)-1);
h_time=h_start+(0:length(h)-1);
subplot(3,1,1)
stem([nmin x_time(1)-1 x_time x_time(length(x_time))+1 nmax],[0 0 x 0 0],'r')
grid on, title('Señal de Entrada, x[n]')
ylabel('Amplitud'), xlabel('Tiempo (segundos)')
axis([nmin nmax min(x)-0.1 max(x)+0.1])
subplot(3,1,2)
stem([nmin h_time(1)-1 h_time h_time(length(h_time))+1 nmax],[0 0 h 0 0],'g')
grid on, title('Señal Respuesta al Impulso, h[n]')
xlabel('Tiempo (segundos)'), ylabel('Amplitud')
axis([nmin nmax min(h)-0.1 max(h)+0.1])
subplot(3,1,3)
stem([nmin n(1)-1 n nmax],[0 0 y 0],'b')
grid on, title('Convolución y[n]= x[n]*h[n]')
xlabel('Tiempo (segundos)'),ylabel('Amplitud')
axis([nmin nmax ymin ymax])
end
Gráfica
Solucionando el ejemplo con las funciones creadas, se obtienen los siguientes resultados:
>> ConvDis(x,0,h,0)