def generar_pico_de_ruido(senal, fs, frec_pico, snr): cantidad_muestras = len(senal) duracion = cantidad_muestras / fs potencia_media_senal = calcular_potencia(senal, fs) potencia_ruido_db = 10 * np.log10(potencia_media_senal) - snr potencia_ruido = 10**(potencia_ruido_db / 10) omega_2_L = 2 * 2 * np.pi * frec_pico * duracion amplitud_ruido = np.sqrt(potencia_ruido * 2 * omega_2_L / (omega_2_L + np.sin(omega_2_L))) t, ruido = generar_senoide(0, duracion, amplitud_ruido, frec_pico, 0, fs) return ruido
import numpy as np from matplotlib import pyplot as plt from ejemplos.practica_2.funciones import generar_senoide from ejemplos.practica_4.funciones import generar_senal_cuadrada lim_izq = -10 lim_der = 10 duracion_senal = lim_der - lim_izq T = 1 fs = 2000 eje_t_1, senal = generar_senal_cuadrada(T, lim_izq, lim_der, fs) eje_t_2, seno = generar_senoide(lim_izq, lim_der, 1, 1, 0, fs) N = 48 n_muestras = duracion_senal * fs + 1 suma_parcial_fourier = [0 for x in range(n_muestras)] for n in range(1, N + 1): seno = generar_senoide(lim_izq, lim_der, 1, (2 * n - 1) * 2 * np.pi / T, 0, fs) coef = 1 / (2 * n - 1) suma_parcial_fourier += coef * seno[1] suma_parcial_fourier *= (4 / np.pi) plt.plot(eje_t_1, suma_parcial_fourier) plt.show()
from ejemplos.practica_2.funciones import generar_senoide import numpy as np from matplotlib import pyplot as plt t, x = generar_senoide(0, 3, 2, 50, 0, 44100) t, y = generar_senoide(0, 3, 2, 50, np.pi, 44100) z1 = x + y z2 = x + (-x) plt.plot(t, z1) plt.show()
import numpy as np from matplotlib import pyplot as plt from ejemplos.practica_2.funciones import generar_senoide from ejemplos.practica_5.funciones import calcular_transformada duracion = 2 fs = 1000 t, x_t = generar_senoide(0, duracion, 2, 250, 0, fs) X_w = calcular_transformada(x_t) re_X = np.real(X_w) im_X = np.imag(X_w) # El coseno es real puro, asi que esto es casi nulo. Lo descarto ''' w = np.linspace(0, 2*np.pi*fs, duracion*fs, endpoint=None) fig, axes = plt.subplots(1, 3) axes[0].plot(t, x_t) axes[1].plot(w, re_X) axes[1].set_ylim(bottom=-2000, top=2000) axes[2].plot(w, im_X) axes[2].set_ylim(bottom=-2000, top=2000) plt.show() ''' w = np.linspace(0, 2*np.pi*fs, duracion*fs, endpoint=None) f = np.linspace(0, fs, duracion*fs, endpoint=None)
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 import scipy.signal as sig from ejemplos.practica_2.funciones import generar_senoide from matplotlib import pyplot as plt fs = 44100 t1, x = generar_senoide(0, 3, 2, 50, 0, fs) t2, y = generar_senoide(0, 3, 2, 400, 0, fs) t3, w = generar_senoide(0, 3, 2, 20000, 0, fs) t4, u = generar_senoide(0, 6, 2, 50, 0, fs) t5, v = generar_senoide(0, 6, 2, 400, 0, fs) t0, silencio = generar_senoide(0, 3, 0, 400, 0, fs) z1 = np.concatenate((x, y), axis=None) z2 = np.concatenate((x, w, y), axis=None) z3 = np.concatenate((silencio, w), axis=None) + u + v f, t, spect = sig.spectrogram(z3, fs) plt.pcolormesh(t, f, spect) plt.ylabel('Frequency [Hz]') plt.xlabel('Time [seg]') plt.show()
from matplotlib import pyplot as plt import numpy as np from ejemplos.practica_2.funciones import generar_senoide from ejemplos.practica_5.funciones import calcular_transformada, poner_a_cero_valores_nulos fs = 500 ti = 0 tf = 5 t1, x1 = generar_senoide(ti, tf, 5, 50, -np.pi/2, fs) t2, x2 = generar_senoide(ti, tf, 3, 100, np.pi/2, fs) t3, x3 = generar_senoide(ti, tf, 1, 200, np.pi/3, fs) x = x1 + x2 + x3 duracion = tf - ti X_w = calcular_transformada(x) X_w = poner_a_cero_valores_nulos(X_w, 0.01) mod_X = np.abs(X_w)[0:int(len(X_w)/2)] fase_X = np.angle(X_w)[0:int(len(X_w)/2)] f = np.linspace(0, fs, duracion*fs, endpoint=None)[0:int(len(X_w)/2)] fig, axes = plt.subplots(1, 2) axes[0].stem(f, mod_X) axes[0].set_xlabel("f (Hz)")
import numpy as np from matplotlib import pyplot as plt # SCRIPT from ejemplos.practica_2.funciones import generar_senoide, calcular_energia fs_10 = 10 fs_100 = 100 fs_1000 = 1000 t_inicial = 0 t_final = 1 t_10, senoide_10 = generar_senoide(t_inicial, t_final, 1, fs_10) t_100, senoide_100 = generar_senoide(t_inicial, t_final, 1, fs_100) t_1000, senoide_1000 = generar_senoide(t_inicial, t_final, 1, fs_1000) fig, (ax1, ax2, ax3) = plt.subplots(1, 3) ax1.plot(t_10, senoide_10) ax2.plot(t_100, senoide_100) ax3.plot(t_1000, senoide_1000) e_10 = calcular_energia(senoide_10, fs_10) e_100 = calcular_energia(senoide_100, fs_100) e_1000 = calcular_energia(senoide_1000, fs_1000) print('Energia (10 muestras por segundo): ' + str(e_10)) print('Energia (100 muestras por segundo): ' + str(e_100)) print('Energia (1000 muestras por segundo): ' + str(e_1000)) plt.show()
import numpy as np from ejemplos.practica_2.funciones import generar_senoide from ejemplos.practica_7.funciones import estan_afinadas fs = 44100 t1, x = generar_senoide(0, 3, 2, 50, 0, fs) t2, y = generar_senoide(1, 8, 10, 50.5, np.pi, fs) tol_abs = 0.6 print(estan_afinadas(x, y, fs, tol_abs))