def plot_group_delay(self, a, b): w, gd = signal.group_delay((b, a)) plt.plot(w, numpy.round(gd, 5)) plt.ylabel('Retardo de grupo [muestras]') plt.xlabel('Frecuencia [rad/muestra]') plt.title('Retardo de grupo') plt.show()
def plot_freq_resp(self, a, b, worN=None): w, h = signal.freqz(b, a, worN) plt.plot(w, 20 * numpy.log10(abs(h)), 'b') plt.ylabel('Amplitud [dB]', color='b') plt.xlabel('Frecuencia [rad/muestra]') plt.gca().twinx() angles = numpy.unwrap(numpy.angle(h)) plt.plot(w, angles, 'g') plt.ylabel('Fase (rad)', color='g') plt.grid() plt.show()
def leer_wave(self, filename): """Lectura de un fichero de audio para representación gráfica - filename, cadena de texto, es la ruta donde se encuentra el fichero a analizar""" framerate, data = wavfile.read(filename) t = numpy.arange(start=0, stop=1.0 * data.size / framerate, step=1. / framerate) plt.figure(1) plt.subplot(211) plt.title('Onda de:\n' + filename) plt.xlabel('Tiempo (seg)') plt.plot(data) return plt, data, framerate
def representa_espectrograma(self, x, NFFT, Fs, noverlap): """Representacion del espectograma de un fichero de audio - x, array, datos de la señal - NFFT, int, la cantidad de puntos de datos utilizados en cada bloque para la Transformada de Furier. - Fs, long, frecuencia de muestreo - noverlap, int, el número de puntos de superposición entre bloques""" plt.figure(1) plt.subplot(212) plt.title('Espectograma') plt.ylabel('Frequencia [Hz]') plt.xlabel('Tiempo [seg]') Pxx, freqs, bins, im = plt.specgram(x, NFFT=NFFT, Fs=Fs, cmap='jet', noverlap=noverlap) return plt, Pxx, freqs
def leer_wave(self, filename): """Lee un fichero de audio y muestra en la salida los datos leidos en x y la frecuencia de muestreo a la que se ha grabado el audio Entrada: - filename, cadena de texto, ruta del fichero que queremos leer Salidas: - x, array, datos en bruto del fichero leido - framerate, entero, frecuencia de muestreo del audio""" framerate, data = wavfile.read(filename) plt.figure(1, figsize=(9, 9)) plt.subplot(211) plt.title('Onda de:\n' + filename) plt.ylabel('Amplitud') plt.xlabel('Tiempo [muestras]') plt.plot(data) return data, framerate