In [1]:
def hannwindow(freq1, freq2, f_sample=10, width=3, sig=.5):
    "Erstellt einen hann 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
    window = concatenate((zeros(((width-1)/(2*width))*f.size), hanning(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
    #f = f[:502681]
    xaxis = linspace(0, 2*sig, f.size)
    figure()
    plot(xaxis, f)
    plt.xlabel('t in s')
    plt.ylim(-1,1)
    figure()
    FTdata = fft.fft(f)/f.size
    FT = FTdata[:(FTdata.size/2)]
    faxis = fft.fftfreq(f.size, (1./f_sample))
    faxis = faxis[:(faxis.size/2)]
    plot(faxis[:1000], real(FT)[:1000])
    #plot(faxis[:1000], imag(FT)[:1000])
    plot(faxis[:1000], abs(FT)[:1000])
    print abs(FT[:101])
    #plt.ylim(0, .002)
    plt.xlabel('Freq in Hz')
    plt.ylabel('Amplitude')
    #figure()
    #print f.size
    #S, freqs = psd(f, 24000, f_sample,noverlap=12000,window=window_none)
    #plt.xlim(0, 2000)
    #plt.savefig('psd')
    return FTdata, xaxis, faxis, f_sample;

#hannwindow(100,100,10.,1,.5)
#hannwindow(200,200,32.,1,.5)
hannwindow(128,128,16.384,200,100.)
hannwindow(128,512,16.384,200,100.)






'''
from scipy import signal


def bandpass_ifft(freq1, freq2, f_sample, width=1, sig=6):
    flicker, x, f, fs = hannwindow(freq1, freq2, f_sample, width, sig)
    lowpass = zeros((1,flicker.size))
    lowpass[0,0:(flicker.size/fs*60)] = flicker[0:(flicker.size/fs*60)]
    lowpass[0,(flicker.size-(flicker.size/fs*60)):] = flicker[(flicker.size-(flicker.size/fs*60)):]
    figure()
    plot(x, fft.ifft(lowpass*flicker.size)[0,:])
    plt.xlim(5,7)
    figure()
    bpsize = (60*flicker.size/fs)+(10*flicker.size/fs)
    bandpass = concatenate((signal.tukey(bpsize, sym=False), zeros(flicker.size-2*bpsize)), axis=1)
    bandpass = concatenate((bandpass, signal.tukey(bpsize, sym=False)), axis=1)
    bandpass[0:(flicker.size/fs*60)/3.] = 1.
    bandpass[(flicker.size-(flicker.size/fs*60)/3.):] = 1.
    bandpass = abs(flicker)*bandpass
    sig = fft.ifft(bandpass*flicker.shape)
    figure()
    plot(x, real(sig))
    plt.title('bandpass-iFFT  Flicker 200->700Hz')
    plt.xlabel('t in s')
    plt.xlim(5.8,6.2)
    plt.ylim(-0.0000005, 0.0000005)
    figure()
    plot(f[:1000],abs(bandpass[:1000]))
    return;

bandpass_ifft(100,900,36)
'''





'''
#figure()
#plot(f1, S_f1f2-S_f1)
#plot(f2, S_f1f2-S_f2)
plt.xlim(0,100)
#plt.ylim(4,8)

figure()
plot(f1[:100], S_f1[:100], label='200 Hz')
plot(f2[:100], S_f2[:100], label='800 Hz')
plot(f[:100], S_f1f2[:100], label='200Hz->800Hz')
pylab.legend(loc='lower right')
plt.xlabel('f in Hz')
plt.ylabel('PSD in dB/Hz')
plt.xlim(0,120)
plt.title('Im niederfrequenten Bereich verstaerktes Signal')
#plt.savefig('Hann_window_low_freq')
'''


Samplingfrequenz: 16.384 kHz
[  3.38813179e-22   3.85031976e-12   7.69968950e-12   1.15471594e-11
   1.53917802e-11   1.92326031e-11   2.30686806e-11   2.68990661e-11
   3.07228145e-11   3.45389823e-11   3.83466279e-11   4.21448118e-11
   4.59325969e-11   4.97090484e-11   5.34732347e-11   5.72242269e-11
   6.09610995e-11   6.46829304e-11   6.83888014e-11   7.20777979e-11
   7.57490099e-11   7.94015313e-11   8.30344610e-11   8.66469026e-11
   9.02379647e-11   9.38067613e-11   9.73524116e-11   1.00874041e-10
   1.04370780e-10   1.07841767e-10   1.11286144e-10   1.14703062e-10
   1.18091678e-10   1.21451156e-10   1.24780666e-10   1.28079387e-10
   1.31346505e-10   1.34581214e-10   1.37782716e-10   1.40950220e-10
   1.44082946e-10   1.47180120e-10   1.50240977e-10   1.53264763e-10
   1.56250732e-10   1.59198146e-10   1.62106279e-10   1.64974412e-10
   1.67801838e-10   1.70587859e-10   1.73331788e-10   1.76032948e-10
   1.78690671e-10   1.81304303e-10   1.83873198e-10   1.86396722e-10
   1.88874253e-10   1.91305179e-10   1.93688900e-10   1.96024828e-10
   1.98312386e-10   2.00551011e-10   2.02740149e-10   2.04879260e-10
   2.06967816e-10   2.09005302e-10   2.10991215e-10   2.12925065e-10
   2.14806375e-10   2.16634680e-10   2.18409528e-10   2.20130483e-10
   2.21797119e-10   2.23409025e-10   2.24965802e-10   2.26467067e-10
   2.27912450e-10   2.29301592e-10   2.30634152e-10   2.31909801e-10
   2.33128223e-10   2.34289117e-10   2.35392198e-10   2.36437193e-10
   2.37423843e-10   2.38351905e-10   2.39221150e-10   2.40031364e-10
   2.40782346e-10   2.41473910e-10   2.42105887e-10   2.42678119e-10
   2.43190465e-10   2.43642799e-10   2.44035009e-10   2.44366998e-10
   2.44638684e-10   2.44850000e-10   2.45000892e-10   2.45091325e-10
   2.45121274e-10]
Samplingfrequenz: 16.384 kHz
[  3.66235069e-06   3.66235068e-06   3.66235066e-06   3.66235061e-06
   3.66235055e-06   3.66235047e-06   3.66235037e-06   3.66235026e-06
   3.66235013e-06   3.66234998e-06   3.66234981e-06   3.66234963e-06
   3.66234942e-06   3.66234921e-06   3.66234897e-06   3.66234872e-06
   3.66234845e-06   3.66234816e-06   3.66234786e-06   3.66234754e-06
   3.66234720e-06   3.66234685e-06   3.66234648e-06   3.66234610e-06
   3.66234569e-06   3.66234528e-06   3.66234485e-06   3.66234440e-06
   3.66234394e-06   3.66234346e-06   3.66234297e-06   3.66234247e-06
   3.66234195e-06   3.66234141e-06   3.66234086e-06   3.66234030e-06
   3.66233973e-06   3.66233914e-06   3.66233854e-06   3.66233793e-06
   3.66233730e-06   3.66233667e-06   3.66233602e-06   3.66233536e-06
   3.66233468e-06   3.66233400e-06   3.66233331e-06   3.66233261e-06
   3.66233189e-06   3.66233117e-06   3.66233044e-06   3.66232970e-06
   3.66232895e-06   3.66232819e-06   3.66232742e-06   3.66232665e-06
   3.66232587e-06   3.66232508e-06   3.66232428e-06   3.66232348e-06
   3.66232268e-06   3.66232186e-06   3.66232105e-06   3.66232023e-06
   3.66231940e-06   3.66231857e-06   3.66231774e-06   3.66231690e-06
   3.66231606e-06   3.66231522e-06   3.66231438e-06   3.66231353e-06
   3.66231269e-06   3.66231184e-06   3.66231099e-06   3.66231015e-06
   3.66230930e-06   3.66230846e-06   3.66230761e-06   3.66230677e-06
   3.66230593e-06   3.66230510e-06   3.66230427e-06   3.66230344e-06
   3.66230261e-06   3.66230179e-06   3.66230098e-06   3.66230017e-06
   3.66229937e-06   3.66229857e-06   3.66229778e-06   3.66229700e-06
   3.66229622e-06   3.66229546e-06   3.66229470e-06   3.66229395e-06
   3.66229321e-06   3.66229249e-06   3.66229177e-06   3.66229106e-06
   3.66229037e-06]
Out[1]:
"\n#figure()\n#plot(f1, S_f1f2-S_f1)\n#plot(f2, S_f1f2-S_f2)\nplt.xlim(0,100)\n#plt.ylim(4,8)\n\nfigure()\nplot(f1[:100], S_f1[:100], label='200 Hz')\nplot(f2[:100], S_f2[:100], label='800 Hz')\nplot(f[:100], S_f1f2[:100], label='200Hz->800Hz')\npylab.legend(loc='lower right')\nplt.xlabel('f in Hz')\nplt.ylabel('PSD in dB/Hz')\nplt.xlim(0,120)\nplt.title('Im niederfrequenten Bereich verstaerktes Signal')\n#plt.savefig('Hann_window_low_freq')\n"

In [ ]: