Ich spiele mit Python und Scipy, um Windowing zu verstehen, machte ich ein Diagramm, um zu sehen, wie sich Windowing unter FFT verhält, aber das Ergebnis ist nicht, was ich sah. das Grundstück ist: Schlechte Ergebniszeichnung Fensterung FFT
die mittleren Plots sind reine FFT Grundstück, hier ist, wo ich komische Dinge bekommen. Dann habe ich die Triggerung geändert. Funktion Leck zu bekommen, einen 1 gerade für die 300 ersten Elemente des Arrays setzen, das Ergebnis:
der Code:
sign_freq=80
sample_freq=3000
num=np.linspace(0,1,num=sample_freq)
i=0
#wave data:
sin=np.sin(2*pi*num*sign_freq)+np.sin(2*pi*num*sign_freq*2)
while i<1000:
sin[i]=1
i=i+1
#wave fft:
fft_sin=np.fft.fft(sin)
fft_freq_axis=np.fft.fftfreq(len(num),d=1/sample_freq)
#wave Linear Spectrum (Rms)
lin_spec=sqrt(2)*np.abs(np.fft.rfft(sin))/len(num)
lin_spec_freq_axis=np.fft.rfftfreq(len(num),d=1/sample_freq)
#window data:
hann=np.hanning(len(num))
#window fft:
fft_hann=np.fft.fft(hann)
#window fft Linear Spectrum:
wlin_spec=sqrt(2)*np.abs(np.fft.rfft(hann))/len(num)
#window + sin
wsin=hann*sin
#window + sin fft:
wsin_spec=sqrt(2)*np.abs(np.fft.rfft(wsin))/len(num)
wsin_spec_freq_axis=np.fft.rfftfreq(len(num),d=1/sample_freq)
fig=plt.figure()
ax1 = fig.add_subplot(431)
ax2 = fig.add_subplot(432)
ax3 = fig.add_subplot(433)
ax4 = fig.add_subplot(434)
ax5 = fig.add_subplot(435)
ax6 = fig.add_subplot(436)
ax7 = fig.add_subplot(413)
ax8 = fig.add_subplot(414)
ax1.plot(num,sin,'r')
ax2.plot(fft_freq_axis,abs(fft_sin),'r')
ax3.plot(lin_spec_freq_axis,lin_spec,'r')
ax4.plot(num,hann,'b')
ax5.plot(fft_freq_axis,fft_hann)
ax6.plot(lin_spec_freq_axis,wlin_spec)
ax7.plot(num,wsin,'c')
ax8.plot(wsin_spec_freq_axis,wsin_spec)
plt.show()
EDIT: wie in den Kommentaren gefragt, i aufgetragen die Funktionen in dB-Skala, wodurch viel klarere Parzellen erhalten werden. Vielen Dank @SleuthEye!
Für die Liebe der Götter, bitte erkläre, was jede Box in der Handlung ist, was "reine FFT" bedeutet und was genau das Problem ist. –
Was ist anders als erwartet? Die zweite Figur zeigt eine Spitze bei 0 von der DC-Komponente dieser eingefügten 1s. Was nicht direkt offensichtlich ist, ist das Leckniveau weit von den Spitzen. Sie würden das besser sehen, wenn Sie die Spektrumsamplituden auf einer logarithmischen Skala (Dezibel) zeigen würden. – SleuthEye
@SleuthEye: das lineare Spektrum von der Sinuswelle und dem Fenster + Sünde scheint gut zu funktionieren, das Problem ist das mit der Hanning-Funktion, zeigt nichts genau, was ich sah, war etwa so: [link] (https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Window_function_and_frequency_response_-_Hann.svg/500px-Window_function_and_frequency_response_-_Hann.svg.png).Greets! :) – tomzko