Análisis de sistemas de control, Convolución - respuesta al impulso, Procesamiento de señales digitales

Convolución de señales en tiempo discreto – Matlab

La salida y[n] de un sistema lineal e invariante en el tiempo (LTI-system) puede ser determinada mediante la sumatoria siguiente:

La ecuación anterior se denomina Convolución entre las señales discretas x[n] y h[n], donde x[n] es la entrada al sistema y h[n] es la respuesta al impulso del sistema.

Por convención, la convolución entre x[n] y h[n] se expresa mediante al siguiente notación:

Ejemplo 1. 

El pulso rectangular x[n] definido por la siguiente ecuación es la entrada a un sistema LTI con respuesta l impulso h[n]:

Determine la salida y[n] del sistema.

Solucion:

En el link Graficar el escalón unitario hemos diseñado en Matlab la función stepseq para graficar , o cualquier combinación tal como la señal x[n] del ejemplo 1. El siguiente Script permite graficar x[n].

n=[0:40];
x=stepseq(0,0,40)-stepseq(10,0,40);
stem(n,x)
xlabel(‘n’); ylabel(‘x[n]’)

Figure 1. Input sequence x[n], example 1.

Por su parte, el siguiente Script permite graficar h[n].

n=[0:40];
h=(0.9).^n;
stem(n,h)
xlabel(‘n’); ylabel(‘h[n]’)

Figure 2. Impulse response h[n] for system in example 1.

Ahora, utilizamos la función conv del toolbox de Matlab para determinar y[n]:

y=conv(x,h);
n=[0:80];
stem(n,y);
xlabel(‘n’); ylabel(‘y[n]’)

Figure 3. Output sequence y[n]=x[n]*h[n] for example 1.

Otra aproximación es utilizando la función filter (ver Resolver ecuaciones diferenciales en tiempo discreto):

n=[0:40];
x=stepseq(0,0,40)-stepseq(10,0,40);
h=(0.9).^n;
y=filter(h,1,x);
stem(n,y)
xlabel(‘n’); ylabel(‘y[n]’)
grid

Este comando genera:

Figure 4. Output sequence y[n]=x[n]*h[n] for example 1.

Hay una diferencia en los resultados de estas dos implementaciones que debe tenerse en cuenta. Como puede ver en la Figura 3, la secuencia de salida de la función conv(x, h) tiene una longitud mayor que las secuencias x[n] y h[n]. Por otro lado, la secuencia de salida de la función filter(h, 1, x) en la Figura 4 tiene exactamente la misma longitud que la secuencia de entrada x[n]. En la práctica, se recomienda el uso de la función filter.

Nota: la función filter se ha utilizado para calcular la convolución indirectamente. Eso fue posible debido a que la respuesta al impulso en el ejemplo 1 era una secuencia exponencial de un solo lado (sólo definida pra n>=0), para la cual podríamos determinar una representación en forma de ecuación en diferencias. No todas las respuestas de impulso de longitud infinita se pueden convertir en ecuaciones en diferencias.

Convolución analíticamente

También podemos hacer la convolución entre x[n] y h[n] Analíticamente:

Aplicando la ecuación para la convolución obtenemos :

Ahora usamos la expresión para la suma de componentes de una serie geométrica (Serie geométrica):

En consecuencia, la ecuación (1) es equivalente a:

La ecuación (3) tiene la misma forma que la ecuación (2) excepto por el término u(n-k) el cual toma diferentes valores dependiendo de los valores que toman n y k. Existen tres posibilidades para u(n-k) que deben ser evaluadas por separado:

Cas0 1. n<0: Entonces u(n-k)=0 para 0 k 9. Por lo tanto:

Caso 2. En este caso, los valores son distintos de cero y no se superponen. Entonces, en el intervalo 0n<9, u(n-k)=1 para 0kn. Así:

Aplicando la fórmula de la ecuación (2):

Caso 3. En este caso la respuesta al impulso h[n] se superpone parcialmente con x[n]. Así, en el intervalo 9 n, u(n-k)=1 para 0 k 9. En consecuencia:

En el último caso h[n] se superpone completamente a la entrada x[n].

Método gráfico de convolución

Para desarrollar la convolución entre dos señales también podemos utilizar un método gráfico, como en el ejemplo siguiente.

Ejemplo 2

The input signal x[n] to an LTI system with impulse response h[n]:

Determine graphically y[n] through:

La imagen tiene un atributo ALT vacío; su nombre de archivo es null-63.png

Solution:

Sequences x[k] and h[n-k], and the convolution of both signals can be seen as follows:

El método de convolución gráfica anterior involucra los siguientes pasos:

  1. La respuesta al impulso h[k] se invierte en el tiempo (es decir, se refleja sobre el origen) para obtener h[-k]  y posteriormente se desplaza mediante n para formar h[n-k] = h[-(k-n)], que es una función de k con parámetro n;
  2. Las dos secuencias x[k] y h[n-k] se multiplican entre sí para todos los valores de k con n fija en algún valor;
  3. El producto x[k]h[n-k] se suma sobre todas las k para producir una sola muestra de salida y[n];
  4. Los pasos 1 a 3 se repiten a medida que n varía en el intervalo de –infinito a +infinito para producir la salida completa y[n].
Ejemplo 3
Convolution Properties.

Otras propiedades de interés son:

Ante una entrada x[n], la respuesta y[n] de un sistema LTI es:

Se conoce que la respuesta al impulso h[n] del sistema:

Determinar x[n]. Seleccionar la respuesta correcta de las siguientes alternativas:

Respuesta:

Nuestra estrategia será utilizar las siguientes propiedades:

Expresamos la respuesta al impulso en términos de deltas de Dirac desplazados:

Luego, si seleccionamos:

Entonces:

Podríamos demostrar gráficamente que la anterior ecuación coincide con la gráfica para y[n] dada en el enunciado. Por lo tanto, la opción correcta es la letra a). Vamos a demostrarlo con Matlab.

La respuesta al impulso h[n] y la opción a) para la entrada x[n] pueden ser graficadas en Matlab utilizando:

n=[-3:10];
h=stepseq(0,-3,10)-stepseq(4,-3,10);
stem(n,h)
xlabel(‘n’); ylabel(‘h[n]’)

Figure 5. Impulse response h[n] for system in example 3.

n=[-3:10];
x=stepseq(-3,-3,10)-stepseq(1,-3,10);
stem(n,x)
xlabel(‘n’); ylabel(‘x[n]’)

Figure 6. Input signal x[n] for system in example 3.

Ahora, podemos graficar y[n] utilizando:

n=[-3:10];
h=stepseq(0,-3,10)-stepseq(4,-3,10);
x=stepseq(-3,-3,10)-stepseq(1,-3,10);
x1=stepseq(-2,-3,10)-stepseq(2,-3,10);
x2=stepseq(-1,-3,10)-stepseq(3,-3,10);
x3=stepseq(0,-3,10)-stepseq(4,-3,10);
y=x+x1+x2+x3;
stem(n,y)

Figure 7. Output sequence y[n] for example 3.

El mismo resultado lo hubiésemos obtenido utilizando:

La imagen tiene un atributo ALT vacío; su nombre de archivo es null-64.png

n=[-3:10];;
h=stepseq(0,-3,10)-stepseq(4,-3,10);
x=stepseq(-3,-3,10)-stepseq(1,-3,10);
y=conv(h,x);
n=[0:26];
stem(n,y)
xlabel(‘n’); ylabel(‘y[n]’)

Figure 8. Output sequence y[n]=x[n]*h[n] for example 3.

Fuente:

  • Digital Signal Processing Using Matlab, 3erd ed
  • Fundamentos_de_Señales_y_Sistemas_usando la Web y Matlab
  • Oppenheim – Señales y Sistemas
  • Análisis de Sistemas Lineales Asistido con Scilab – Un Enfoque desde la Ingeniería Eléctrica.

Revisión literaria hecha por:

Prof. Larry Francis Obando – Technical Specialist – Educational Content Writer

Se hacen trabajos, se resuelven ejercicios!!

WhatsApp:  +34633129287  Atención Inmediata!!

Twitter: @dademuch

Copywriting, Content Marketing, Tesis, Monografías, Paper Académicos, White Papers (Español – Inglés)

Escuela de Ingeniería Electrónica de la Universidad Simón Bolívar, USB Valle de Sartenejas.

Escuela de Ingeniería Eléctrica de la Universidad Central de Venezuela, UCV CCs

Escuela de Turismo de la Universidad Simón Bolívar, Núcleo Litoral.

Contacto: España. +34633129287

Caracas, Quito, Guayaquil, Jaén. 

WhatsApp:  +34633129287     

Twitter: @dademuch

FACEBOOK: DademuchConnection

email: dademuchconnection@gmail.com

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s