In [37]:
from scipy import fftpack

fs = 512
w = 2*pi*4.
x = arange(-0.06,1.44,1./fs)

f = sin(w*x) + 0.5*sin(2*w*x+0.85*pi) + sin(.5*w*x)
fig = plt.figure(figsize=(10,4))
ax = fig.add_subplot(111)

window = hanning(f.shape[0])
#f = f*window

plot(x, f, linewidth=3, label='f(t)*Fensterfunktion')
#plot(x, window, linewidth=1, color='g', label='Fensterfunktion')
#plot((1.07,1.07), (-2.5,2.5), linewidth=3, color='r')
#plt.legend(loc='lower right', fontsize=15)
plot((0.09,0.09), (0,2.5), linewidth=2, color='g')
plot((0.59,0.59), (0,2.5), linewidth=2, color='g')
#ax.spines["top"].set_visible(False)
#ax.spines["right"].set_visible(False)
ax.annotate('', xy=(.09,2.3), xytext=(.59,2.3), arrowprops=dict(arrowstyle="<->"))
ax.annotate('T', xy=(1,1), xytext=(.34, 2.5), fontsize=15)

plt.xlabel('t [s]', fontsize=15)
plt.ylabel('f(t)', fontsize=15)
plt.grid()
plt.yticks([0, ])
plt.xticks([0, 1])
plt.xlim(-.1, 1.5)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

#plt.fill_between(x, 0, f, alpha=.3)



F = fftpack.fft(f)/f.shape[0]
freq = fftpack.fftfreq(f.shape[0], 1./fs)

'''

afft = fig.add_subplot(212)
plot(freq[:20], abs(F)[:20], 'or')
plt.xlabel('Frequenz [Hz]', fontsize=15)
plt.ylabel('Amplitude', fontsize=15)
plt.grid()
plt.ylim(-.1, .7)

plt.yticks([0, .25, .5])
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
'''
plt.tight_layout()

fig.savefig('/home/weiss/ba/figures/periodic.pdf')

'''
plt.close('all')
fig, (a, afft) = plt.subplots(nrows=1, ncols=2)
a.plot(x, f)
a.set_xlabel('$t$ in Sekunden')
a.set_ylabel('$sin(8\pi x)$')
afft.plot(freq[:20], abs(F)[:20], 'o')
afft.set_xlabel('Frequenz in $Hz$')
plt.tight_layout()
'''


Out[37]:
"\nplt.close('all')\nfig, (a, afft) = plt.subplots(nrows=1, ncols=2)\na.plot(x, f)\na.set_xlabel('$t$ in Sekunden')\na.set_ylabel('$sin(8\\pi x)$')\nafft.plot(freq[:20], abs(F)[:20], 'o')\nafft.set_xlabel('Frequenz in $Hz$')\nplt.tight_layout()\n"

In [7]:
ffrfs = 1000.
w = 2*pi*10.
x = arange(0,1,1/fs)

f = sin(w*x)

plot(x, f)

F = fftpack.fft(f)/fs
freq = fftpack.fftfreq(1000, 1./fs)

print F.size

print freq[:20]


figure()
plot(freq[:20], abs(F)[:20], 'o')


1000
[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.
  15.  16.  17.  18.  19.]
Out[7]:
[<matplotlib.lines.Line2D at 0x7ff4de059f50>]

In [ ]:
|