convolução Linear e Circular

este exemplo mostra como estabelecer uma equivalência entre convolução linear e circular.Convolução Linear e circular São operações fundamentalmente diferentes. No entanto, existem condições em que a convolução linear e circular são equivalentes. O estabelecimento desta equivalência tem implicações importantes. Para dois vetores, x e y, a convolução circular é igual à transformada de Fourier discreta inversa (DFT) do produto da DFTs dos vetores. Saber as condições sob as quais convolução linear e circular são equivalentes permite que você use o DFT para computar de forma eficiente convoluções lineares.

a convolução linear de um vetor de ponto N, x, e um vetor de ponto L, y, tem comprimento N + L-1.

para que a convolução circular de x e y seja equivalente, deve colocar os vectores com zeros no comprimento pelo menos N + L – 1 antes de tomar o DFT. Depois de inverter o produto da DFTs, mantenha apenas os primeiros elementos N + L – 1.

criar dois vetores, x e y, e calcular a convolução linear dos dois vetores.

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

a saída tem comprimento 4+3-1.

Pad both vectors with zeros to length 4+3-1. Obter o DFT de ambos os vetores, multiplicar os DFT, e obter o DFT inverso do produto.

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

A convolução circular do zero-acolchoado vetores, xpad e ypad, é equivalente à convolução linear de x e y. Você mantém todos os elementos de ccirc porque a saída tem comprimento 4+3-1.

Plot the output of linear convolution and the inverse of the DFT product to show the equivalence.

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')

a Figura contém 2 eixos. Eixos 1 com o título convolução Linear de x e y contém um objeto do tipo haste. Eixos 2 com o título convolução Circular de xpad e ypad contém um objeto do tipo tronco.

comprimir os vectores até 12 e obter a convolução circular utilizando a DFT inversa do produto da DFTs. Reter apenas os primeiros 4 + 3-1 elementos para produzir um resultado equivalente à convolução linear.

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

O Processamento de Sinal de Ferramentas de software™ tem uma função, cconv, que retorna a convolução circular de dois vetores. Você pode obter a convolução linear de x e y usando a convolução circular com o seguinte código.

ccirc2 = cconv(x,y,6);

cconv internamente usa o mesmo DFT baseado no procedimento ilustrado no exemplo anterior.

Deixe uma resposta

O seu endereço de email não será publicado.