Por que estamos usando convolução circular no DSP?
Qual é a principal razão sólida para o uso no processamento digital?
Por que o conceito de convolução circular vem mais frequentemente do que a convolução linear?
convolution
vishaln
fonte
fonte
Respostas:
Dado um sistema LTI de tempo discreto com resposta ao impulsoh[n] , pode-se calcular sua resposta a qualquer entrada x[n] por uma soma de convolução :y[n]=x[n]⋆h[n]=∑k=−∞∞h[k]x[n−k](1)
Sem mais nada, a definição acima é para a convolução linear (convolução aperiódica) entreh[n] e x[n] , que são sequências aperiódicas de tempo discreto de comprimento possivelmente infinito, a menos que indicado de outra forma. Isso é diferente de uma convolução circular que está entre duas seqüências periódicas de períodoN e computados em um único período.
Você pode calcular uma convolução linear no domínio do tempo pela Eq.1 ou no domínio da frequência usando a seguinte propriedade DTFT (transformada de Fourier em tempo discreto):y[n]=x[n]⋆h[n]⟹Y(ejω)=X(ejω)H(ejω)(2)
O DTFT está naturalmente relacionado à convolução linear, pois lida com sequências aperiódicas teoricamente existentes que podem se estender de−∞ para ∞ refletida em seus limites da soma definidora:
X(ejω)=∑n=−∞∞x[n]e−jωn(3)
Quando você deseja fazer um cálculo manualmente, use expressões simbólicas para sinais, comox[n]=anu[n] e h[n]=bnu[n] , você pode calcular os resultados nos domínios de tempo ou frequência, conforme descrito acima.
Além disso, quando você deseja calcular o mesmo resultado usando um computador, pode usar a abordagem no domínio do tempo com base em uma recursão LCCDE (para sistemas IIR) ou em soma direta de convolução finita (para sistemas FIR), MAS a abordagem no domínio da frequência ganhou ' t trabalha com DTFT; como é principalmente uma ferramenta usada para desenvolver a matemática da teoria de sinais e sistemas, e não é adequada para implementações de computadores digitais, como sua variávelω é um número contínuo real .
Em vez disso, o que é usado é o DFT (transformada discreta de Fourier) definido comoX[k]=X(ejω)|ω=2πkN(4)
Ondek=0,1,...,N−1 e N é o comprimento da DFT, que é chamada de DFT de ponto N do sinalx[n] .
Eq.4 implica que a sequência DFTX[k] é obtido como amostras uniformes do DTFT X(ejω) , que é uma função periódica, portanto a DFT X[k] também é periódico, mas consideramos apenas seu primeiro período de k=0 para N−1 .
Como as seqüências de DFT são inerentemente periódicas, suas convoluções também serão periódicas (circulares). Portanto, enquanto uma convolução linear entre sinais aperiódicosx[n] e y[n] está implícito na expressão I-DTFT y[n]=I−DTFT{X(ejω)H(ejω)} em vez disso, uma convolução circular entre duas seqüências periódicas é implicada pela expressão I-DFTy~[n]=I−DFT{X[k]H[k]}
Então, como queremos calcular uma convolução linear entre duas seqüências aperiódicasx[n] e h[n] de comprimentos Lx e Lh respectivamente, usando o domínio da frequência por N DFTs de ponto, X[k] e H[k] , precisamos calcular uma convolução circular entre as extensões periódicas dos sinais x~[n] e h~[n] de períodos N .
A chave está em escolher um comprimento adequadoN dos DFTs, que devem ser longos o suficiente para evitar qualquer alias no domínio do tempo da sequênciay~[n] , returned by the IDFT computation: y~[n]=∑r=−∞∞y[n−rN](5)
wherey[n] is the result of the linear convolution that would be returned by the theoretical inverse DTFT and y~[n] is the periodic result of the periodic (circular) convolution implied by the inverse DFT.
Note that if any one of the signals are of infinite length, then it's NOT possible to compute their linear convolution using the DFT approach, asN would go to infinity, practically impossible.
The implementation of a linear convolution via DFT then has the following steps:
Choose N according to the following criteria:N≥Lx+Lh−1 which guarantees an alias-free reconstruction of the inverse signal y[n] from its DFT Y[k] of the computed circular convolution via X[k]H[k] .
Compute N-point DFTsX[k] and H[k] of x[n] and h[n] .
ComputeY[k]=X[k]H[k]
Compute N-point inverse DFT ofY[k] to produce the output y[n]
fonte
Answering to your questions:
In DSP we normally deal with finite length discrete sequences (even if the signal under study is infinite we can only analyze a finite portion of it at a time). When it comes to processing a signal the way to process it must me implementable in a discrete logic device (namely a device that can't store continuous values because this values are infinite and it has a finite amount of memory, storage,etc). This explains why Discrete Time Fourier Transform (DTFT) which transforms a discrete time sequence into a continuous frequency sequence can't be implemented in hardware. Linear convolution in time is equivalent to the multiplication of 2 sequences DTFTs, but as DTFT can't be implemented in hardware this is not the way to obtain linear convolution. Discrete Fourier Transform (DFT), on the other hand, transforms a discrete time sequence into a discrete frequency sequence and this allows it to be implemented in hardware. Yet multiplying 2 sequences DFTs is equivalent to circular convolution in principle (linear convolution may also be obtained if the time sequences are previously padded with enough zeros, see explanation below). The reason why multiplying 2 sequences DFTs is equivalent to circular and not linear convolution comes from the fact that DFT for a finite time length sequence is equivalent to the Discrete Fourier Series (DFS) of that very same finite time length sequence periodically extended (concatenating the finite time length sequence infinitely in time axis) taken over one period. DFS is also periodic in frequency domain so linear convolution does not apply there (see 8.2.5 and 8.6.5 of Oppenheim's Discrete Time Signal Processing 3rd edition )
It is obtained by DFT multiplication and DFT is easily implemented in hardware. Moreover very efficient algorithms such as FFT exist for computing the DFT
That's depending on the application. Circular convolution may also yield the linear convolution. For instance, let's say we are working with signal A of length N and signal B also of length N (it can also be done for different lengths). The circular convolution will be of length N. In order to obtain linear convolution both A and B must be padded with zeros until they achieve a length of at least 2*N - 1. Then applying the DFT on both, multiplying them and applying inverse DFT will give you the linear convolution
fonte
Here's a bit of intuition:
When you deal with signals digitally, you are always dealing with a finite signal. This is because you can only process on a finite amount of data points.
The problem however is that when you perform transformations into the frequency domain using the DFT, by definition a signal cannot be finite. Therefore when doing a DFT operation, theres is an implicit alteration to your signal from being finite, to being periodic, even if your signal is not periodic.
This periodicity of the signal leads to the need of using convolution in a circular manner.
fonte
O DFT / FFT é um "martelo" computacional útil, mas todos os seus vetores de base de transformação são circulares (número inteiro periódico) na abertura e podem ser estendidos infinitamente como funções periódicas, que alguns usuários confundem com a natureza dos dados de entrada.
Se você zerar em uma quantidade suficiente, a convolução circular produz o mesmo resultado que a convolução linear, mas a um custo computacional ligeiramente maior que o circular.
fonte