``````

In [14]:

from numpy import sin, linspace, pi
from pylab import plot, show, title, xlabel, ylabel, subplot
from scipy import fft, arange
%matplotlib inline

``````
``````

In [15]:

def plotSpectrum(y,Fs):
"""
Plots a Single-Sided Amplitude Spectrum of y(t)
source: http://glowingpython.blogspot.com/2011/08/how-to-plot-frequency-spectrum-with.html
"""
n = len(y) # length of the signal
k = arange(n)
T = n/Fs
frq = k/T # two sides frequency range
frq = frq[range(n/2)] # one side frequency range

Y = fft(y)/n # fft computing and normalization
Y = Y[range(n/2)]

plot(frq,abs(Y),'r') # plotting the spectrum
xlabel('Freq (Hz)')
ylabel('|Y(freq)|')

``````
``````

In [16]:

Fs = 150.0;  # sampling rate
Ts = 1.0/Fs; # sampling interval
t = arange(0,1,Ts) # time vector

ff = 5;   # frequency of the signal
y = sin(2*pi*ff*t)

``````
``````

In [17]:

subplot(2,1,1)
plot(t,y)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectrum(y,Fs)
show()

``````
``````

``````

## Make your own signal by adding two signals together, then plot the spectum

You should see a spike at each ff you added in

``````

In [34]:

Fs = 150.0;  # sampling rate
Ts = 1.0/Fs; # sampling interval
t = arange(0,1,Ts) # time vector
y2 = sin(2*pi*8*t)

``````
``````

In [42]:

subplot(2,1,1)
plot(t,y2)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectrum(y2,Fs)
show()

``````
``````

``````

## Import a sample signal and plot the freq spectrum

``````

In [36]:

y3 = y + y2

``````
``````

In [43]:

subplot(2,1,1)
plot(t,y3)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectrum(y3,Fs)
show()

``````
``````

``````
``````

In [40]:

y4 = y * -1

``````
``````

In [44]:

subplot(2,1,1)
plot(t,y4)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectrum(y4,Fs)
show()

``````
``````

``````
``````

In [53]:

y5 = sin(2*pi*14*t)

``````
``````

In [54]:

subplot(2,1,1)
plot(t,y5)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectrum(y5,Fs)
show()

``````
``````

``````
``````

In [55]:

y6 = y5 + y3

``````
``````

In [56]:

subplot(2,1,1)
plot(t,y6)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectrum(y6,Fs)
show()

``````
``````

``````
``````

In [ ]:

``````