Questa domanda mi ha anche confuso per molto tempo. La spiegazione di @ hotpaw2 è buona. Potresti essere interessato al semplice esperimento utilizzando matlab.
https://poweidsplearningpath.blogspot.com/2019/04/dftidft.html
informazioni aggiornate.
Per verificare che questo fatto sia semplice, dobbiamo solo osservare con cautela lo spettro della risposta all'impulso di un filtro passa-banda ideale (?) Che azzera semplicemente i contenitori FFT. Perché devo aggiungere l'avverbio "con cautela"? Se utilizziamo solo le stesse dimensioni della FFT per osservare la risposta dell'impulso, verremo ingannati come mostrato in Fig . 1 . Tuttavia, se aggiungiamo l'ordine di DFT osservando l'uscita del filtro, ovvero, azzerando la risposta all'impulso, possiamo trovare il cosiddetto fenomeno di Gibbs, increspature nel dominio della frequenza, come illustrato nella Figura 2 .
I risultati infatti provengono dall'effetto finestre. Se vuoi comprendere appieno il problema, fai riferimento al capitolo 7.6 e al capitolo 10.1-10.2 della Bibbia di DSP (1). Per riassumere, qui vengono annotati tre punti chiave.
- Le dimensioni della finestra e l'ordine del DFT (FFT) sono totalmente indipendenti. Non mescolarli insieme.
- Le proprietà della finestra (tipo / dimensione) dominano la forma di DTFT. (es. un lobo principale più ampio porta a una banda transitoria più ampia nella risposta in frequenza.)
- DFT è solo il campionamento di DTFT nel dominio della frequenza. Inoltre, maggiore è l'ordine di DFT, più denso è lo spettro di DFT.
Quindi, con l'aiuto di uno spettro più denso in Fig. 2 , possiamo vedere attraverso la maschera del filtro passa banda ideale (falso).
Ingannevolmente Freq. Risposta.
Fenomeno di Gibbs in Freq. Risposta.
(1) Alan V. Oppenheim e Ronald W. Schafer. 2009. Elaborazione del segnale a tempo discreto (3a edizione). Prentice Hall Press, Upper Saddle River, NJ, USA.
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