| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import numpy as np
- def points_to_waveform(
- amplitudes: np.ndarray, grad_raster_time: float, times: np.ndarray
- ) -> np.ndarray:
- """
- 1D interpolate amplitude values `amplitudes` at time indices `times` as per the gradient raster time
- `grad_raster_time` to generate a gradient waveform.
- Parameters
- ----------
- amplitudes : numpy.ndarray
- Amplitude values at time indices `times`.
- grad_raster_time : float
- Gradient raster time.
- times : numpy.ndarray
- Time indices.
- Returns
- -------
- waveform : numpy.ndarray
- Gradient waveform.
- """
- amplitudes = np.asarray(amplitudes)
- times = np.asarray(times)
- if amplitudes.size == 0:
- return np.array([0])
- grd = (
- np.arange(
- start=np.round(np.min(times) / grad_raster_time),
- stop=np.round(np.max(times) / grad_raster_time),
- )
- * grad_raster_time
- )
- waveform = np.interp(x=grd + grad_raster_time / 2, xp=times, fp=amplitudes)
- return waveform
|