1 #ifndef jb_testing_delay_timeseries_hpp 2 #define jb_testing_delay_timeseries_hpp 16 template <
typename sample_t>
18 std::pair<std::ptrdiff_t, sample_t>
20 if (index < 0 or size <= std::size_t(index)) {
21 return std::make_pair(static_cast<std::ptrdiff_t>(-1), sample_t(0));
23 return std::make_pair(static_cast<std::ptrdiff_t>(index), sample_t(0));
30 template <
typename sample_t>
32 std::pair<std::ptrdiff_t, sample_t>
35 return std::make_pair(static_cast<std::ptrdiff_t>(0), sample_t(0));
38 index = size - (-index %
size);
41 return std::make_pair(static_cast<std::ptrdiff_t>(index), sample_t(0));
60 typename timeseries_t,
typename duration_t,
typename extrapolation_functor>
63 timeseries_t
const& ts, duration_t t, duration_t sampling_period,
64 extrapolation_functor
const& extrapolation) {
65 auto ticks = t / sampling_period;
70 return *(ts.data() +
static_cast<std::size_t
>(r.first));
77 typename timeseries_t,
typename duration_t,
typename extrapolation_functor>
79 timeseries_t
const& ts, duration_t delay, duration_t sampling_period,
80 extrapolation_functor
const& extrapolation) {
87 element_type* it_a = a.data();
89 duration_t stamp = i * sampling_period - delay;
98 template <
typename timeseries_t,
typename duration_t>
100 timeseries_t
const& ts, duration_t delay, duration_t sampling_period) {
111 template <
typename timeseries_t,
typename duration_t>
113 timeseries_t
const& ts, duration_t delay, duration_t sampling_period) {
124 #endif // jb_testing_delay_timeseries_hpp
timeseries_t delay_timeseries_periodic(timeseries_t const &ts, duration_t delay, duration_t sampling_period)
Delay a timeseries using a periodic extension for early values.
typename container_type::value_type element_type
Define the type of the elements in the container.
std::size_t array_shape(container_type const &a)
Return the shape of the container in a form suitable for construction of a vector-like container...
timeseries_t delay_timeseries(timeseries_t const &ts, duration_t delay, duration_t sampling_period, extrapolation_functor const &extrapolation)
Delay a timeseries using a user-provided extrapolation policy.
jb::detail::array_traits< timeseries_t >::element_type extrapolate_timeseries(timeseries_t const &ts, duration_t t, duration_t sampling_period, extrapolation_functor const &extrapolation)
A function to get the extrapolated value of a timeseries.
timeseries_t delay_timeseries_zeroes(timeseries_t const &ts, duration_t delay, duration_t sampling_period)
Delay a timeseries using zeroes for early values.
std::size_t element_count(container_type const &a)
Count the number of elements for a vector-like container.
The top-level namespace for the JayBeams library.