Diese Frage hat mich auch lange verwirrt. Die Erklärung von @ hotpaw2 ist gut. Das einfache Experiment mit matlab könnte Sie interessieren.
https://poweidsplearningpath.blogspot.com/2019/04/dftidft.html
aktualisierte Information.
Um zu verifizieren, dass diese Tatsache einfach ist, müssen wir nur das Spektrum der Impulsantwort eines idealen (?) Bandpassfilters, das gerade FFT-Bins auf Null setzt, vorsichtig beobachten. Warum muss ich das Adverb "vorsichtig" hinzufügen? Wenn wir nur die gleiche Größe der FFT verwenden, um die Antwort des Impulses zu beobachten, werden wir getäuscht, wie in 1 gezeigt . Wenn wir jedoch die Ordnung der DFT addieren, wenn wir die Ausgabe des Filters beobachten, dh die Impulsantwort mit Null auffüllen, können wir das sogenannte Gibbs-Phänomen finden, Wellen im Frequenzbereich, wie in Fig. 2 dargestellt .
Die Ergebnisse stammen tatsächlich aus dem Fenstereffekt. Wenn Sie das Problem vollständig verstehen möchten, lesen Sie bitte Kapitel 7.6 und Kapitel 10.1-10.2 der DSP-Bibel (1). Zusammenfassend werden hier drei wichtige Punkte genannt.
- Fenstergröße und Reihenfolge der DFT (FFT) sind völlig unabhängig. Mischen Sie sie nicht zusammen.
- Die Eigenschaften des Fensters (Typ / Größe) bestimmen die Form der DTFT. (Bsp. breitere Hauptkeule führt zu einem breiteren Einschwingbereich im Frequenzgang.)
- DFT ist nur die Abtastung von DTFT im Frequenzbereich. Darüber hinaus ist das Spektrum der DFT umso dichter, je höher die Ordnung der DFT ist.
Mit Hilfe des dichteren Spektrums in Abb. 2 können wir also durch die Maske des idealen (gefälschten) Bandpassfilters sehen.
Betrügerisch Freq. Antwort.
Gibbs-Phänomen in Freq. Antwort.
(1) Alan V. Oppenheim und Ronald W. Schafer. 2009. Discrete-Time Signal Processing (3. Aufl.). Prentice Hall Press, Upper Saddle River, New Jersey, 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