La función calcular_indices_para_alinear_ciclo alinea un ciclo de manera que la señal inicie en el cruce por cero ascendente.
Se trata de un shift circular de las muestras del ciclo.
Este ejemplo puede servir para probar el funcionamiento con distintos valores de fase:
#-----------------------------------------------
frecuencia_senial = 1 #Hz
frecuencia_muestreo = 20 #Hz
fase = -45 #grados
vector_tiempos = np.arange(0, 1/frecuencia_senial, 1/frecuencia_muestreo)
ciclo = np.sin(2*np.pi*frecuencia_senial*vector_tiempos + np.radians(fase))
indices = calcular_indices_para_alinear_ciclo(ciclo)
ciclo_alineado = ciclo[indices]
print(indices)
print(ciclo)
print(ciclo_alineado)
plt.figure()
plt.plot(vector_tiempos, ciclo, '.-', label='ciclo' )
plt.plot(vector_tiempos, ciclo_alineado, 's-', label='ciclo_alineado' )
plt.legend()
#--------------------------------------------------