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 [ ]: