Convolución lineal y Circular

Este ejemplo muestra cómo establecer una equivalencia entre convolución lineal y circular.

La convolución lineal y circular son operaciones fundamentalmente diferentes. Sin embargo, hay condiciones en las que la convolución lineal y circular son equivalentes. Establecer esta equivalencia tiene implicaciones importantes. Para dos vectores, x y y, la convolución circular es igual a la transformada discreta inversa de Fourier (DFT) del producto de las DFT de los vectores. Conocer las condiciones en las que las convoluciones lineales y circulares son equivalentes le permite utilizar el DFT para calcular de manera eficiente las convoluciones lineales.

La convolución lineal de un vector de punto N, x, y un vector de punto L, y, tiene longitud N + L-1.

Para que la convolución circular de x e y sea equivalente, debe rellenar los vectores con ceros a una longitud de al menos N + L – 1 antes de tomar el DFT. Después de invertir el producto de las DFTs, conserve solo los primeros elementos N + L – 1.

Cree dos vectores, x y y, y calcule la convolución lineal de los dos vectores.

x = ;y = ;clin = conv(x,y);

La salida tiene una longitud de 4+3-1.

Rellene ambos vectores con ceros de longitud 4 + 3-1. Obtenga el DFT de ambos vectores, multiplique los DFT y obtenga el DFT inverso del producto.

xpad = ;ypad = ;ccirc = ifft(fft(xpad).*fft(ypad));

La convolución circular de los vectores con relleno cero, xpad y ypad, es equivalente a la convolución lineal de x y y. Conserva todos los elementos de ccirc porque la salida tiene una longitud de 4 + 3-1.

Trace la salida de la convolución lineal y la inversa del producto DFT para mostrar la equivalencia.

subplot(2,1,1)stem(clin,'filled')ylim()title('Linear Convolution of x and y')subplot(2,1,2)stem(ccirc,'filled')ylim()title('Circular Convolution of xpad and ypad')

la Figura contiene 2 ejes. Ejes 1 con título Convolución lineal de x e y contiene un objeto de tipo plica. Ejes 2 con título Convolución circular de xpad e ypad contiene un objeto de tipo stem.

Rellene los vectores a la longitud 12 y obtenga la convolución circular utilizando el DFT inverso del producto de los DFT. Retenga solo los primeros 4 + 3-1 elementos para producir un resultado equivalente a la convolución lineal.

N = length(x)+length(y)-1;xpad = ;ypad = ;ccirc = ifft(fft(xpad).*fft(ypad));ccirc = ccirc(1:N);

El software Signal Processing Toolbox™ tiene una función, cconv, que devuelve la convolución circular de dos vectores. Puede obtener la convolución lineal de x y y utilizando la convolución circular con el siguiente código.

ccirc2 = cconv(x,y,6);

cconv internamente utiliza la misma DFT procedimiento se ilustra en el ejemplo anterior.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.