Ganho de processamento FFT

8

Ao transformar um sinal ruidoso via Fast Fourier Transform do domínio do tempo para o domínio da frequência, existe um "ganho de processamento" da FFT que aumenta à medida que o número de posições aumenta. Ou seja, quanto mais caixas tiver, mais o piso de ruído no domínio da frequência é reduzido.

1. Na verdade, eu não entendo completamente, de onde vem esse ganho. Isso significa que eu preciso apenas amostrar o sinal com uma taxa de amostragem mais alta para ter mais compartimentos, portanto, um ganho maior no processamento de FFT?

2. O que há com a FFT inversa? Eu tenho um "Processamento perdido"? Ao iniciar no domínio da frequência, isso significa que, quanto mais amostras de frequência eu tiver, mais ruído aparecerá no sinal do domínio do tempo? No entanto, isso seria contra-intuitivo, pois isso também levaria a uma grande distorção dos sinais ao aplicar o preenchimento (dos dados no domínio da frequência) para fins de interpolação no domínio do tempo.

Frank
fonte
11
Resposta curta: uma maneira de ver a DFT é um banco de filtros passa-banda com espaçamento uniforme. À medida que você aumenta o número de posições no seu DFT, cada filtro tem uma largura de banda mais estreita (e, portanto, passa menos ruído). Se você estiver procurando por um sinal de banda estreita, vale a pena ter a largura do compartimento DFT próxima à largura de banda do sinal de interesse. Dessa forma, você ainda passa o sinal inalterado enquanto também passa o mínimo de ruído possível. Posso expandir isso mais tarde, se tiver uma chance.
Jason R
Eu apreciaria uma explicação expandida.
19414 Frank
3
designnews.com/...
random_dsp_guy
@ Frank: O link fornecido por Seth tem uma explicação um pouco mais detalhada. Aumentar o tamanho da FFT para "diminuir o ruído" é análogo a diminuir a largura de banda da resolução em um analisador de espectro.
Jason R
11
OBRIGAÇÃO DE ESCHEW O SNR da FFT aumenta com o número de pontos da FFT devido à própria DEFINIÇÃO do SNR da FFT. O SNR da FFT é definido como o SNR em um BW igual ao tamanho do BIN de frequência e o tamanho do BIN diminui à medida que o número de pontos de FFT aumenta.
usuário da conta

Respostas:

5

Eu acho que a maneira mais fácil de entender um conceito é ter um exemplo simples:

% example of FFT of a very noisy sin wave
f0 = 1000;     % sinusoid frequency
Fs = 10000;    % sampling frequency 
n = 0:1/Fs:1; % one second worth of sample index
N = length(n);
SNR = -20;    % signal to noise ratio is -20dB
Pn  = 0.5*10^(-SNR/10); % signal power is 0.5 for sin wave
NFFT = round([N/8 N/4 N/2 N]); % FFT size to see how it effects the gain


%% signal and generation
sx = sin(2*pi*f0*n);
sn = sqrt(Pn)*randn(1, N);
%% adding noise
xn = sx + sn;
%% signal with and w/o noise in time
figure(1);
plot(n(1:100), xn(1:100)); hold on;
plot(n(1:100), x(1:100), 'r');
legend('noisy', 'clean');
%% FFT of different sizes
figure(2); 
Xf = fft(xn, NFFT(4));
plot(Fs*(0:NFFT(4)-1)/NFFT(4), abs(Xf)/N, '.-'); hold on;
Xf = fft(xn, NFFT(3));
plot(Fs*(0:NFFT(3)-1)/NFFT(3), abs(Xf)/N, 'r.-');
Xf = fft(xn, NFFT(2));
plot(Fs*(0:NFFT(2)-1)/NFFT(2), abs(Xf)/N, 'g.-'); 
Xf = fft(xn, NFFT(1));
plot(Fs*(0:NFFT(1)-1)/NFFT(1), abs(Xf)/N, 'k.-');
legend('FFT size = N', 'FFT size = N/2', 'FFT size = N/4', 'FFT size = N/8');

A trama da onda de pecado barulhenta e limpa no domínio do tempo é assim: Onda sinuosa ruidosa vs limpa

Os gráficos da FFT para tamanhos diferentes no domínio da frequência são: insira a descrição da imagem aqui

ou seja, aumentar o tamanho da FFT significa adicionar mais amostras de sinal no cálculo e, portanto, é mais fácil para a FFT determinar a frequência, à medida que as informações do sinal são adicionadas, enquanto as informações do ruído não. Aqui você pode ver que o sinal wrt "relativo" do piso de ruído diminuiu.

Quanto a Fourier inverso, não direi que é uma perda, diria que voltamos de onde viemos.

hth.

aprendiz
fonte
2
Embora não seja necessariamente rigoroso, esse é o tipo de resposta que o OP estava procurando. As outras respostas que descrevem os ganhos constantes inerentes a muitas implementações de DFT não estão erradas, mas simplesmente não estão respondendo à pergunta que foi feita. Veja o link fornecido no comentário de Seth sobre a pergunta acima também.
Jason R
Não posso concordar inteiramente com a afirmação "não há sentido da IFFT, se não fizemos a FFT em primeiro lugar". Pense em um analisador de rede vetorial que fornece valores no domínio da frequência. Nesse caso, nenhuma FFT (direta) é aplicada a priori. Portanto, aplicar a FFT inversa nesses dados originais levaria a "Processamento perdido" enquanto se transformava no domínio do tempo ?!
Frank
@Frank isso significa que no espectro de dispersão, introduzimos uma perda de processamento no transmissor, para aplicar ganho de processamento no receptor! No final, não ganhamos nada.
aluno
@learner: O espectro de propagação é algum tipo de exemplo artificial, uma vez que um sinal de banda estreita é "feito pelo homem" espalhado no transmissor para obter algum ganho no receptor. No entanto, ao usar um analisador de rede vetorial, não há etapa antes de obter os dados no domínio da frequência. Portanto, não há fonte de "SNR degenerativo" artificial para obter SNR em algum outro ponto da cadeia de processamento.
Frank
@Frank Na verdade, sempre que usei o analisador de rede, sempre fiz o IFFT de uma varredura de espectro (3GHz-11GHz); nesse caso, não consegui observar uma perda de processamento do IFFT. No entanto, seu ponto é válido. Isso me fez pensar que o ganho de FFT e a perda de IFFT são relativos às propriedades do sinal que está sendo considerado. Considere uma função dirac delta com o tempo; se fizermos FFT, em vez de ganhar, teremos uma perda. Você concorda?
aluno
1

O "'ganho de processamento' da FFT que aumenta à medida que o número de posições aumenta" deve-se apenas a um problema de definição. o FFT é um algoritmo "rápido" para calcular o DFT. geralmente o DFT (e DFT inverso) é definido como:

X[k]n=0N1x[n]ej2πnk/N

e

x[n]=1Nk=0N1X[k]e+j2πnk/N

mas poderia ter sido definido como

X[k]1Nn=0N1x[n]ej2πnk/N

e

x[n]=k=0N1X[k]e+j2πnk/N

e pode até ser definido como

X[k]1Nn=0N1x[n]ej2πnk/N

e

x[n]=1Nk=0N1X[k]e+j2πnk/N

nesta última forma, não há "ganho de processamento" da DFT nem da iDFT.

Robert Bristow-Johnson
fonte
Eu não entendo por que esta resposta foi rebaixada. Não trata da parte 2 da pergunta, mas definitivamente não está errado.
Phonon
3
e responde à questão do ganho da FFT inversa tanto quanto à questão do ganho da FFT direta. como a vida.
Robert bristow-johnson
11
Para o "ganho de processamento" das outras respostas, não importa qual é a normalização. A parte importante é a que distância do seu nível de ruído está em relação ao seu sinal.
Oystein 16/05
então @oystein, "ganho de processamento" se aplica apenas à relação sinal / ruído?
Robert Bristow-johnson
@robert bristow-johnson, sim esse é o meu entendimento, pelo menos. Não importa se você dimensiona seu resultado de DFT em , ou , pois você dimensiona 'sinal' e 'ruído'. NN1
Oystein 17/05/19
1

O ganho do processamento da FFT vem do fato de a DFT (da qual a FFT é simplesmente uma implementação rápida) ser uma transformação linear não normalizada. Isso é um bocado, então vamos ver o que isso significa.

Vou assumir que você sabe o que é uma transformação linear . Ou seja, dados os vetores e e uma matriz que temosxyA

y=Ax.

DFT é exatamente essa transformação. De fato, você pode usar o dftmtxcomando MATLAB para gerar essa matriz para você com base no comprimento do vetor . Neste caso,x

y=DFT(x).

Essa matriz tem algumas propriedades. Primeiro de tudo, é uma matriz quadrada, o que significa que provavelmente é invertível (e de fato é!). Também nos diz que estamos basicamente pegando componentes de x e realizando uma mudança de base dada pelas colunas de para obter sua DFT. Por enquanto, tudo bem.AA

Agora, vamos a algumas propriedades mais importantes. matriz é ortogonal. Isso significa que todas as colunas de são perpendiculares a todas as outras colunas, ou mais matematicamente, é uma matriz diagonal (você pode ter que pensar um pouco sobre por que isso é verdade). Essa é uma propriedade muito agradável, pois a simples transposição da matriz nos dá algo muito próximo de sua inversa.AAATA

Para tornar esse relacionamento Transpose Inverse restrito, queremos que a matriz também seja normal . Essa é uma matriz cujo vetor de cada coluna possui comprimento 1. Em outras palavras, se é uma coluna de , então Se uma matriz é ortogonal e normal, chamamos de ortonormal e neste caso , de modo é de facto o inverso de . Arrumado!AaAaTa=1.ATA=IATA

A matriz DFT usual (ou a transformação DFT usual) é ortogonal, mas não ortonormal. Na verdade, se é a matriz DFT, então , onde é o número de colunas (ou filas, é quadrado!) Em . Para torná-lo ortonormal, devemos usar . Se você observar por tempo suficiente, percebe que, se dimensionamos as transformações para frente e inversa por , estamos fazendo um trabalho extra na execução dos cálculos, por isso geralmente apenas dimensionamos no inverso.DDTD=NNDDN1N1N

Existem melhores razões teóricas para fazê-lo de um lado do que de ambos. Veja minha resposta aqui para mais informações.

Phonon
fonte
1

O ganho de processamento da FFT refere-se ao aumento da SNR para um sinusóide. Você pode pensar na DFT ou na FFT como um banco de filtros correspondentes. O filtro correspondente maximiza o SNR na saída. Outra maneira de analisar o ganho de processamento, se você tiver ruído senoidal no domínio do tempo em um determinado SNR e, em seguida, pegar a FFT e observar a potência do Sinsoid versus a potência do ruído no compartimento da FFT (supondo que a frequência corresponda exatamente a um Bin FFT), você verá um maior SNR ou ganho de processamento. Você pode pensar na FFT como filtros de largura de banda e o ruído em cada compartimento de frequência é espalhado em comparação com o sinal no domínio do tempo em que o ruído passa pelo sinal.

O ganho de processamento ocorre porque adiciona coerentemente os componentes do sinusóide. Então você também verá esse chamado ganho coerente. Essa adição coerente também é a razão pela qual, quando você tem um sinal mais longo, obtém mais ganho de processamento, ou seja, mais amostras se juntam de forma coerente. Por coerente, quero dizer que pressupõe que você tenha conhecimento da fase do sinal - neste caso, a frequência. Como alternativa, você pode pensar em um filtro compatível mais longo como tendo uma largura de banda mais estreita, para que menos ruído passe pelo filtro. Assim, você obtém melhor SNR ou ganho de processamento.

Observe que, se o sinusóide não se alinhar exatamente com a frequência de um compartimento de FFT, ainda haverá um pico próximo aos compartimentos de FFT, mas algumas das caixas vizinhas de FFT também conterão magnitudes significativas. Haverá um pico no compartimento de FFT mais próximo, mas será menor que o ganho de processamento. Esse efeito costuma ser chamado de vazamento espectral. Você pode usar janelas para reduzir o vazamento espectral, mas também diminui o ganho de processamento. A pior perda é quando o sinal fica exatamente entre duas frequências da caixa FFT.

Eu sugiro que você leia o jornal Harris nas janelas. Isso explica muitos detalhes dos quais estou falando.

Portanto, se você tiver um senoide com ruído branco, obterá o ganho de processamento usando a DFT / FFT. Ao pegar o IFFT / IDFT, você sofrerá uma perda de processamento porque está espalhando seu sinal de volta ao ruído.

David
fonte
-1

O "ganho" é em termos do conhecimento desejado (e fácil de ver). Se você se transformar no domínio da frequência, obterá um conhecimento mais explícito / visível (como pode ser visto em um gráfico) de bandas de frequência específicas, mas perderá o conhecimento visível (não pode mais vê-lo no gráfico de FFT) de informações exatas de tempo. Se você voltar ao domínio do tempo, obterá um conhecimento mais explícito do tempo (tempo de impulso e mudanças transitórias etc.), mas perderá o conhecimento visível (se você jogar fora o gráfico anterior da FFT) de quais faixas de frequência esse tempo forma de onda do domínio estimula.

Não há ganho real nas informações inerentes presentes no vetor de tempo ou frequência, mais provavelmente algumas pequenas perdas devido à precisão numérica na FFT.

Aumentar a taxa de amostragem de um sinal já com banda limitada (já abaixo de Nyquist na taxa de amostragem mais baixa) não adiciona novas informações (exceto possivelmente mover os dados da amostra para longe das distorções do filtro anti-alias e espalhar o ruído de quantização). Não há nada novo para adicionar mais "ganho".

Porém, aumentar o tempo total do vetor de amostra (não com preenchimento zero, mas com dados relevantes mais reais) pode adicionar novas informações, o que pode permitir o "ganho" do processamento para diminuir o nível de ruído, especialmente devido a um sinal estacionário.

hotpaw2
fonte