Esta pregunta también me ha confundido durante mucho tiempo. La explicación de @ hotpaw2 es buena. Puede interesarle el experimento simple con matlab.
https://poweidsplearningpath.blogspot.com/2019/04/dftidft.html
información actualizada.
Para verificar este hecho es simple, solo necesitamos observar con cautela el espectro de respuesta al impulso de un filtro de paso de banda ideal (?) Que simplemente pone a cero los contenedores FFT. ¿Por qué necesito agregar el adverbio "con precaución"? Si solo usamos el mismo tamaño de la FFT para observar la respuesta del impulso, seremos engañados como se muestra en la figura 1 . Sin embargo, si agregamos el orden de DFT al observar la salida del filtro, es decir, rellenando con cero la respuesta al impulso, podemos encontrar el llamado fenómeno de Gibbs, ondas en el dominio de la frecuencia, como se muestra en la figura 2 .
De hecho, los resultados provienen del efecto de ventanas. Si desea comprender completamente el problema, consulte el capítulo 7.6 y el capítulo 10.1-10.2 de la biblia de DSP (1). En resumen, aquí se señalan tres puntos clave.
- El tamaño de la ventana y el orden de DFT (FFT) son totalmente independientes. No los mezcles juntos.
- Las propiedades de la ventana (tipo / tamaño) dominan la forma de DTFT. (por ejemplo, el lóbulo principal más ancho conduce a una banda transitoria más amplia en la respuesta de frecuencia).
- DFT es solo el muestreo de DTFT en el dominio de la frecuencia. Además, cuanto mayor es el orden de DFT, más denso es el espectro de DFT.
Entonces, con la ayuda de un espectro más denso en la Fig. 2 , podemos ver a través de la máscara del filtro de paso de banda ideal (falso).
Engañosamente Freq. Respuesta.
Fenómeno de Gibbs en Freq. Respuesta.
(1) Alan V. Oppenheim y Ronald W. Schafer. 2009. Procesamiento de señal de tiempo discreto (3ª ed.). Prentice Hall Press, Upper Saddle River, NJ, Estados Unidos.
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