Esta questão também me confundiu por um longo tempo. A explicação de @ hotpaw2 é boa. Você pode estar interessado no experimento simples usando o matlab.
https://poweidsplearningpath.blogspot.com/2019/04/dftidft.html
informação atualizada.
Para verificar se esse fato é simples, basta observar com cautela o espectro da resposta ao impulso de um filtro de passagem de banda ideal (?) Que apenas zera os compartimentos FFT. Por que preciso adicionar o advérbio "com cautela"? Se apenas usarmos o mesmo tamanho da FFT para observar a resposta do impulso, seremos enganados, como mostra a Figura 1 . No entanto, se adicionarmos a ordem do DFT ao observar a saída do filtro, ou seja, preenchendo zero a resposta ao impulso, podemos encontrar o chamado fenômeno de Gibbs, ondulações no domínio da frequência, como mostrado na Fig . 2 .
Os resultados vêm de fato do efeito de janelas. Se você deseja entender completamente o problema, consulte o capítulo 7.6 e o capítulo 10.1-10.2 da Bíblia do DSP (1). Para resumir, três pontos principais são anotados aqui.
- O tamanho da janela e a ordem da DFT (FFT) são totalmente independentes. Não os misture.
- As propriedades da janela (tipo / tamanho) dominam a forma do DTFT. (por exemplo, o lobo principal mais largo leva a uma faixa transitória mais ampla na resposta de frequência.)
- DFT é apenas a amostragem de DTFT no domínio da frequência. Além disso, quanto maior a ordem da DFT, mais denso é o espectro da DFT.
Assim, com a ajuda do espectro mais denso na Fig. 2 , podemos ver através da máscara do filtro de passa-banda ideal (falso).
Enganosamente Freq. Resposta.
Fenômeno de Gibbs em Freq. Resposta.
(1) Alan V. Oppenheim e Ronald W. Schafer. 2009. Processamento de Sinais em Tempo Discreto (3ª ed.). Prentice Hall Press, Upper Saddle River, NJ, EUA.
fps = 15;
LPF = 1;
HPF = 2;
n = -511:512;
n0 = 0;
imp = (n==n0);
NyquistF = 1/2*fps;
%% Ideal BPF
tmp_N = 512;
tmp_n = 0:1:tmp_N-1;
freq = ( n .* fps) ./ tmp_N;
F = fft(imp, tmp_N);
F_bpf = IdealBandpassFilter(F, fps, LPF, HPF);
imp_rep =[real(ifft(F_bpf))'];
% Zero padding.
imp_rep2 =[zeros(1,2048) real(ifft(F_bpf))' zeros(1,2048)];
N = 2^nextpow2(length(imp_rep));
F = fft(imp_rep,N);
freq_step = fps/N;
freq = -fps/2:freq_step:fps/2-freq_step;
freq = freq(N/2+1:end)';
figure;
plot(freq,abs(F(1:N/2)));
xlabel('freq(Hz)');
ylabel('mag');
title('Mis leading Freq Response');
N = 2^nextpow2(length(imp_rep2));
F = fft(imp_rep2,N);
freq_step = fps/N;
freq = -fps/2:freq_step:fps/2-freq_step;
freq = freq(N/2+1:end)';
figure;
plot(freq,abs(F(1:N/2)));
xlabel('freq(Hz)');
ylabel('mag');
title('Zero Padding (DFT) with more points');
%% Function
function filered_signal = IdealBandpassFilter(input_signal, fs, w1, w2)
N = length(input_signal);
n = 0:1:N-1;
freq = ( n .* fs) ./ N;
filered_signal = zeros(N, 1);
for i = 1:N
if freq(i) > w1 & freq(i) < w2
filered_signal(i) = input_signal(i);
end
end
end