Clique aqui para ver o original.


In [ ]:
import numpy as np

twopi = 2 * np.pi
amostrasporseg = 3 * 5  # Samples / sec
frequenciasinal = 1 * 5  # Hz
amostrasnoperiodo = np.round(amostrasporseg / frequenciasinal, decimals=0)

omega = twopi * frequenciasinal / amostrasporseg
z = np.arange(-twopi, twopi, 1. / amostrasporseg)

In [ ]:
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from matplotlib.widgets import Slider

def update(val):
    freq = sfreq.val
    znovo = np.arange(-twopi, twopi, 1. / freq)
    amostragemreal= 3 * sfreq.val
    omega = twopi*freq/amostrasporseg
    omega2 = twopi * freq / amostrasporseg
    y = np.sin(z * omega)
    yf = np.sin(znovo * omega)
    # Amostras por segundo.
    ylinha = np.fft.fft(y)
    beta.clear()
    beta.plot(znovo, yf)
    beta.plot(z, y, 'o-', lw=2)
    beta.set_xlim([-4, 4])
    beta.set_xlabel('t')
    beta.set_ylabel('x(t)')
    beta.set_title('Sinal com amostragem correta x Sinal com amostragem fixa')
    plot2.set_ydata(abs(ylinha))
    plt.draw()

In [ ]:
zfft = np.arange(-1, 1, 2. / len(z))
y = np.sin(z * omega)
ylinha= np.fft.fft(y)
#zlinha = np.fft.fftfreq(len(z))
zlinha = zfft.copy()

print(len(z), len(zfft))

In [ ]:
%pylab tk

fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(3, 1,height_ratios=[1,2,0.25])

fig.subplots_adjust(bottom=.75)

#plot1, = ax.plot(z,y,'-')
#ax.set_title('Sinal Com amostragem fixa')
#ax.set_xlim([-4, 4])

ax = fig.add_subplot(gs[0])
plot2, = ax.plot(zlinha, abs(ylinha))
ax.set_title('Espectro do sinal')
ax.set_xlabel(r'$\omega$/$\pi$')
ax.set_ylabel(r'|X($\omega$)|')

beta = fig.add_subplot(gs[1])
plot3, = beta.plot(z,y,)
beta.plot(z, y, 'o')
beta.set_title('Sinal com amostragem correta x Sinal com amostragem fixa')
beta.set_xlabel(r't')
beta.set_ylabel(r'x(t)')
beta.set_xlim([-4,4])

axfreq = plt.axes([0.25, 0.1, 0.65, 0.03])
sfreq = Slider(axfreq, 'Freq', 0, 300.0, valinit=amostrasporseg)
fig.tight_layout()

_ = sfreq.on_changed(update)

In [ ]: