In [3]:
def hammingwindow(freq1, freq2, f_sample=10, width=3, sig=.1):
"Erstellt einen hamming windowed Frequenzübergang Freq1 auf Freq2 mit sig Signallänge und entsprechende FFT"
freq1, freq2, width = float(freq1), float(freq2), float(width)
f_sample = f_sample*1000.
print "Samplingfrequenz:", f_sample/1000, "kHz"
f1 = tile(concatenate((ones(f_sample/(2*freq1)), zeros(f_sample/(2*freq1))), axis=1), sig*freq1)
f2 = tile(concatenate((ones(f_sample/(2*freq2)), zeros(f_sample/(2*freq2))), axis=1), sig*freq2)
f = concatenate((f1, f2), axis=1)-0.5
xaxis = linspace(0, 2*sig, f.size)
window = concatenate((zeros(((width-1)/(2*width))*f.size), numpy.hamming(f.size/width)), axis=1)
window = concatenate((window, zeros(((width-1)/(2*width))*f.size)), axis=1)
window = concatenate((window, zeros(f.size-window.size)), axis=1)
f = f*window
plot(xaxis, f)
plt.xlabel('t in s')
plt.ylim(-1,1)
figure()
FT = fft.fft(f)/f.size
FT = FT[:(FT.size/2)]
faxis = fft.fftfreq(f.size, (1./f_sample))
faxis = faxis[:(faxis.size/2)]
plot(faxis, abs(FT))
plt.xlim(0, (freq1+freq2))
plt.xlabel('Freq in Hz')
plt.ylabel('Amplitude')
figure()
plt.psd(f, f.size/2, f_sample)
plt.xlim(0, 2000)
return f,FT;
f,FT= hammingwindow(200,700,42)
In [13]:
In [13]:
In [ ]: