import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
# Leer el archivo WAV
sample_rate, data = wavfile.read('g.wav')
# Comprobar si el archivo es estereofónico o monofónico
if len(data.shape) == 2:
# Si es estereofónico, tomamos solo uno de los canales
data = data[:, 0]
# Crear un vector de tiempo
time = np.linspace(0, len(data) / sample_rate, num=len(data))
# Graficar la señal
plt.figure(figsize=(12, 6))
plt.plot(time, data)
plt.title('Señal acústica')
plt.xlabel('Tiempo (s)')
plt.ylabel('Amplitud')
plt.grid()
plt.show()
Para obervar que tenemos un seno, hacemos un zoom a la grafica
La instruccion sample_rate define la frecuencia a la cual se toman los datos, el periodo con el cual se toman es $\tau_d$ = 1/sample_rate=2.08e-5 seg, en la sigueinte grafica
import numpy as np
import math
############ FT
i_0=500
i_I=800
I=i_I-i_0
Qx_i=0.0
Qx_f=1.0
NQx=1000
dQx=(Qx_f-Qx_i)/NQx
EQx=np.zeros(NQx)
QxV=np.zeros(NQx)
############# FT
for ic in range(NQx):
Qx = Qx_i+ic*dQx
QxV[ic]=Qx
Exr=0
Exi=0
for i in range(I):
Exr=Exr+ez_data[i_0+i,int((L/2+H/2)*10)]*math.cos(2.0*math.pi*Qx*(i_0+i)/resolution)
Exi=Exi+ez_data[i_0+i,int((L/2+H/2)*10)]*math.sin(2.0*math.pi*Qx*(i_0+i)/resolution)
EQx[ic] = math.sqrt(Exr*Exr+Exi*Exi)
plt.plot(QxV,EQx)
# Graficar
# Personalización de la gráfica
plt.title('Gráfica de la función y = x', fontsize=16)
plt.xlabel('x', fontsize=14)
plt.ylabel('y', fontsize=14)
plt.axhline(0, color='black',linewidth=0.5, ls='--') # Línea horizontal en y=0
plt.axvline(0, color='black',linewidth=0.5, ls='--') # Línea vertical en x=0
plt.grid(color = 'gray', linestyle = '--', linewidth = 0.5)
# Mostrar la gráfica
plt.show()