import numpy as np from ejemplos.filtros.ruido.generador_ruido import generar_pico_de_ruido from ejemplos.practica_2.funciones import generar_senoide from matplotlib import pyplot as plt fs = 44100 t, senal = generar_senoide(0, 4, 2, 440, 0, fs) N = len(senal) espectro = np.abs(np.fft.fft(senal))[0:int(N / 2)] ruido = generar_pico_de_ruido(senal, fs, 16000, 20) espectro_ruido = np.abs(np.fft.fft(ruido))[0:int(N / 2)] senal_ruidosa = senal + ruido espectro_ruidoso = np.abs(np.fft.fft(senal_ruidosa))[0:int(N / 2)] f = np.linspace(0, fs / 2, len(espectro), endpoint=None) fig, axes = plt.subplots(3, 2) axes[0][0].plot(t, senal) axes[0][0].set_xlabel("t (seg)") axes[0][0].set_xlim(left=0, right=50 / 44100) axes[0][1].plot(f, espectro) axes[0][1].set_xlabel("f (Hz)") axes[1][0].plot(t, ruido) axes[1][0].set_xlabel("t (seg)")
import numpy as np from matplotlib import pyplot as plt import scipy.signal as sg from ejemplos.filtros.filtros_ideales import filtrar_pasa_bajos_ideal from ejemplos.filtros.ruido.generador_ruido import generar_pico_de_ruido from ejemplos.practica_4.funciones import generar_senal_cuadrada # Filtrado pasa bajos de una señal cuadrada con un pico de ruido en 1kHz fs = 44100 t, senal = generar_senal_cuadrada(0.5, 0, 4, fs) N = len(senal) espectro = np.abs(np.fft.fft(senal))[0:int(N / 2)] ruido = generar_pico_de_ruido(senal, fs, 1000, 10) senal_ruidosa = senal + ruido espectro_ruidoso = np.abs(np.fft.fft(senal_ruidosa))[0:int(N / 2)] fpass = 800 fstop = 950 wpass = 800 / (fs / 2) wstop = 950 / (fs / 2) # Las frecuencias angulares fpass y fstop se tienen que normalizar al intervalo (0, 1), donde 1 corresponde # a la frecuencia de Nyquist (fs / 2). Para eso dividimos por (fs/2) # wpass: la frecuencia de paso normalizada # wstop: la frecuencia de corte normalizada # gpass: máxima atenuación tolerable en la banda de paso (en dB) # gstop: mínima atenuación tolerable en la banda de rechazo (en dB)