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?
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?
Respostas:
Dado um sistema LTI de tempo discreto com resposta ao impulso , pode-se calcular sua resposta a qualquer entrada por uma soma de convolução :
Sem mais nada, a definição acima é para a convolução linear (convolução aperiódica) entre e , 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íodoe 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):
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:
Quando você deseja fazer um cálculo manualmente, use expressões simbólicas para sinais, como e , 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 como
Onde e é o comprimento da DFT, que é chamada de DFT de ponto N do sinal.
Eq.4 implica que a sequência DFT é obtido como amostras uniformes do DTFT , que é uma função periódica, portanto a DFT também é periódico, mas consideramos apenas seu primeiro período de para .
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ódicos e está implícito na expressão I-DTFT
Então, como queremos calcular uma convolução linear entre duas seqüências aperiódicas e de comprimentos e respectivamente, usando o domínio da frequência por DFTs de ponto, e , precisamos calcular uma convolução circular entre as extensões periódicas dos sinais e de períodos .
A chave está em escolher um comprimento adequado dos DFTs, que devem ser longos o suficiente para evitar qualquer alias no domínio do tempo da sequência, returned by the IDFT computation:
where is the result of the linear convolution that would be returned by the theoretical inverse DTFT and 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, as 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:
Compute N-point DFTs and of and .
Compute
Compute N-point inverse DFT of to produce the output
Answering to your questions:
- Why are we using circular convolution in DSP?
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 )
- What's the main solid reason for the use of it in digital processing?
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
- Why does the concept of circular convolution come more often than linear convolution?
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
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.
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.