interpdAn interpolation function for time series which may have multiple values at a single timestep (e.g., discrete updates). It works like MATLAB's built-in interp1.
xi = interpd(t, x, ti);
xi = interpd(t, x, ti, mode);
xi = interpd(t, x, ti, mode, ...);
| t | Times (n-by-1) |
|---|---|
| x | States (n-by-m) |
| ti | Output times (p-by-1) |
| mode | '-' for left-most values, '+' for right-most values (default). |
| ... | Any additional arguments to be based along to interp1 (e.g., 'nearest'). |
| xi | States corresponding to output times (p-by-m) |
|---|
Create some times and states. Note that there are two states at t=3.
t = [2.76, 2.91, 3, 3, 3.12].';
x = [0.2, 0.3, 0.4, 1.1, 1.2].';Create the desired output times.
ti = (2.8:0.1:3.1).';Interpolate (t, x) linearly at ti, keeping the right-most values.
xi = interpd(t, x, ti).'xi =
0.2267 0.2933 1.1000 1.1833Interpolate (t, x) linearly at ti, keeping the left-most values.
xi = interpd(t, x, ti, '-').'xi =
0.2267 0.2933 0.4000 1.1833Interpolate (t, x) using 'nearest' at ti, keeping the left-most values.
xi = interpd(t, x, ti, '-', 'nearest').'xi =
0.2000 0.3000 0.4000 1.2000