I want to get tilt sensor value for a given time t_0, but the tilt sensor data points are discrete. How do I interpolate between the discrete points? I have 3-dimensional readings from a tilt sensor (specifically these are rotational angles about X, Y, and Z axes) over time. Let's call these angles S. I want to infer S at a specific time t_0, but each reading is discrete and are at different time points across axes. Here is graphic1 to illustrate.

graphic1

I'm thinking the solution will be something like:

Construct a window in time centred on t_0, then smooth/interpolate between the discrete points within that time window to obtain the 3-dimensional value at t_0, like in graphic2.

graphic2

However, I'm not sure on the following:


How wide should the window be such that no information is lost? (maybe something about Nyquist theorem?)
What smoothing algorithm to use?
The readings themselves are noisy.


Am I thinking about this problem the right way? I'm open to other alternatives.

Also worth nothing that I have to write an implementation in TypeScript.
Assuming that the signal is prefiltered and uniformly sampled according to Shannon Nyquist the textbook solution is to upsample it  using some approximation of the ideal (frequency domain) brickwall lowpass filter, equivalent with a (windowed) sin(x)/x function in the time domain.

The problem is similar to showing a smooth (zoomed in) waveform of discretely sampled audio in an audio editor. Perhaps you can find the code you need in eg Audacity?

If the signal contains noise, you might be able to trade noise suppression for signal distortion by knowing the statistics of both and using a Wiener filter.

As this seems to be a control systems project, perhaps you can use a Kalman filter.