Source code for eqsig.displacements
import numpy as np
[docs]def calc_velo_and_disp_from_accel_arr(acceleration, dt, trap=True):
"""
Computes the velocity and acceleration of an acceleration time series, using numerical integration.
Parameters
----------
acceleration: array_like
acceleration time series
dt: float
time step
trap: bool (default=True)
if True then uses trapezium integration
Returns
-------
velocity: array_like (len=len(acceleration))
velocity time series
displacement: array_like (len=len(acceleration))
displacement time series
"""
from scipy.integrate import cumtrapz
if trap is False:
velocity = np.zeros(len(acceleration) + 1)
velocity[1:] = acceleration * dt # computes the increments
np.cumsum(velocity, out=velocity) # passed into original array for efficiency
# np.insert(velocity, 0, 0)
# velocity = velocity[:-1]
displacement = velocity * dt # computes the increments
np.cumsum(displacement, out=displacement)
velocity = velocity[:-1]
displacement = displacement[:-1]
else:
velocity = cumtrapz(acceleration, dx=dt, initial=0)
displacement = cumtrapz(velocity, dx=dt, initial=0)
return velocity, displacement
[docs]def velocity_and_displacement_from_acceleration(acceleration, dt, trap=True):
"""
Computes the velocity and acceleration of an acceleration time series, using numerical integration.
Parameters
----------
acceleration: array_like
acceleration time series
dt: float
time step
trap: bool (default=True)
if True then uses trapezium integration
Returns
-------
velocity: array_like (len=len(acceleration))
velocity time series
displacement: array_like (len=len(acceleration))
displacement time series
"""
return calc_velo_and_disp_from_accel_arr(acceleration, dt, trap=trap)