1 # 7_17.py 2 3 import numpy as np 4 import matplotlib.pyplot as plt 5 from scipy import fft, signal 6 7 T = 1/100 # seg 8 sample_rate = 1/T 9 sample_time = 1 10 N = int(sample_rate*sample_time) 11 12 for f1 in [30, 30.5]: 13 for Nf in [N, 10*N]: 14 for alpha in [0.5, 1, 5]: 15 f2 = f1 + alpha/(N*T) 16 17 # la frecuencia de muestreo de la seƱal es fija 18 t = np.linspace(0, sample_time, int(N)) 19 y = np.cos(2*np.pi*f1*t) + np.cos(2*np.pi*f2*t) 20 21 print(f1, f2) 22 23 # calculo de DFT de Nf puntos 24 Xf = np.fft.fft(t, n=Nf) 25 freqs = np.fft.fftfreq(Nf, d=T) 26 27 # centrar la frecuencia 0 28 Xf = np.fft.fftshift(Xf) 29 freqs = np.fft.fftshift(freqs) 30 31 # grafico 32 plt.figure(figsize=(8, 4)) 33 markerline, stemlines, baseline = plt.stem(freqs, np.abs(Xf)) 34 plt.setp(baseline, color='black', linewidth=0) 35 plt.title(f"DFT con Nf={Nf}, f1={f1}, f2={f2:.2f}") 36 plt.grid(True, linestyle=':', alpha=0.7) 37 plt.grid(True, which='minor') 38 plt.show()
