In [26]:
def rectwindow(freq1, freq2, f_sample=10, sig=.1): #give f_sample in kHz, sig=signal length in s
    freq1, freq2 = float(freq1), float(freq2)
    f_sample = f_sample*1000.
    f1 = tile(concatenate((ones(f_sample/(2*freq1)), zeros(f_sample/(2*freq1))), axis=0), sig*freq1)  #erste Frequenz
    f2 = tile(concatenate((ones(f_sample/(2*freq2)), zeros(f_sample/(2*freq2))), axis=0), sig*freq2)  #zweite Frequenz
    f = concatenate((f1, f2), axis=0)-0.5
    t_axis = linspace(0, 2*sig, f.size)
    FTdata = fft.fft(f)
    return FTdata, t_axis;


### Simulation
FT1, t = rectwindow(200,400,24.,5.)
FT2, t = rectwindow(200,600,24.,5.)
FT3, t = rectwindow(200,800,24.,5.)


### Filter
x = arange(0,.12,.001)
y = .005*(((x**3)/(.005**4))*exp(-x/.005)-((x**3)/(.01**4))*exp(-x/.01))
Y = (fft.fft(y, 1000)/21.6)[:300]
Y = concatenate((Y, zeros(FT1.size-300)))


### Plot
figure(figsize=(10,6))
plot(t, fft.ifft(FT1*abs(Y)), linewidth=2, label='200Hz, 400Hz')
plot(t, fft.ifft(FT2*abs(Y)), linewidth=2, label='200Hz, 600Hz')
plot(t, fft.ifft(FT3*abs(Y)), linewidth=2, label='200Hz, 800Hz')
plt.xticks(range(10), fontsize=15)
plt.yticks(fontsize=15)
plt.xlim(4,6)
plt.ylim(-.0015, .0003)
plt.grid()
plt.legend(loc='lower right', fontsize=15)
plt.xlabel('t [s]', fontsize=15)
plt.ylabel('Amplitude', fontsize=15)
plt.tight_layout()
#plt.savefig("/Users/robinweiss/Documents/RWeiss/figures/ifft.pdf")



In [ ]: