mirror of
https://gitlab.science.ru.nl/mthesis-edeboone/m-thesis-introduction.git
synced 2024-12-22 19:43:30 +01:00
38 lines
838 B
Python
38 lines
838 B
Python
"""
|
|
Various useful utilities (duh)
|
|
"""
|
|
|
|
import numpy as np
|
|
|
|
def sampled_time(sample_rate=1, start=0, end=1, offset=0):
|
|
return offset + np.arange(start, end, 1/sample_rate)
|
|
|
|
def rot_vector(phi1=0.12345):
|
|
"""
|
|
Return a unit vector rotated by phi radians.
|
|
"""
|
|
|
|
unit = np.array([
|
|
phi1,
|
|
phi1 - np.pi/2
|
|
])
|
|
|
|
return np.cos(unit)
|
|
|
|
def detect_edges(threshold, data, rising=True, falling=False):
|
|
"""
|
|
Detect rising/falling edges in data, returning the indices
|
|
of the detected edges.
|
|
|
|
https://stackoverflow.com/a/50365462
|
|
"""
|
|
|
|
mask = np.full(len(data)-1, False)
|
|
|
|
if rising:
|
|
mask |= (data[:-1] < threshold) & (data[1:] > threshold)
|
|
|
|
if falling:
|
|
mask |= (data[:-1] > threshold) & (data[1:] < threshold)
|
|
|
|
return np.flatnonzero(mask)+1
|