Guia 5 (7/10)

Código:

#Imports: librerías que usan todos los bloques

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
from scipy.optimize import curve_fit

#Señal simulada: una oscilación de 1 Hz con ruido, como la que entrega el sensor

np.random.seed(0)
t = np.linspace(0, 20, 1000)
s = np.sin(2np.pit + 0.2) #+ np.random.randn(len(t))*0.05 + 2
plt.figure(figsize=(10, 4))
plt.plot(t, s)
plt.xlabel(‘Tiempo [s]’); plt.ylabel(‘Fuerza [N]’)
plt.show()

#Búsqueda de picos sin restricciones

peaks, _ = find_peaks(s)
plt.figure(figsize=(10, 4))
plt.plot(t, s)
plt.plot(t[peaks], s[peaks], ‘ro’)
plt.xlabel(‘Tiempo [s]’); plt.ylabel(‘Fuerza [N]’)
plt.show()

Búsqueda de picos pidiendo altura mínima y distancia mínima entre picos (en cantidad de puntos)

peaks, _ = find_peaks(s, height=0.0, distance=40)
plt.figure(figsize=(10, 4))
plt.plot(t, s)
plt.plot(t[peaks], s[peaks], ‘ro’)
plt.xlabel(‘Tiempo [s]’); plt.ylabel(‘Fuerza [N]’)
plt.show()

Período: promedio de las diferencias entre picos consecutivos, con su desviación estándar y el error del promedio

t_picos = t[peaks]
s_picos = s[peaks]
dT = np.diff(t_picos)
T = np.mean(dT)
sT = np.std(dT)
print(‘El tiempo de periodo es T =’, T, ‘y la desviación estándar es’, sT)
print(‘El error del promedio es’, sT/np.sqrt(len(dT)))

WordPress Appliance - Powered by TurnKey Linux