Saturday

February 13, 2016
Posted by **Kate** on Wednesday, October 3, 2012 at 12:15pm.

T Readings

1 100 103 105

2 103 101 107

3 102 104 108

4.5 107 107 105

7 105 106 104

I need to correct the times (and the corresponding values) so that each timestamp is one second apart. My professor said that the best way to do this would be with a weighted average.

I'm finding it difficult to find a formula that seems correct. I tried solving for the correct time value, ie:

4 = ((3+4.5)/2)x

Where x= the unknown weight, 4 is the corrected timestamp value, and 3 and 4.5 are the known time values. This gives me an X of 16/15. This process works when I know what the value should be (as with the timestamps), but I don't know what the interpolated reading values should be. I thought that maybe once I found the "weight" from the timestamps I could use it to interpolate the readings, but this doesn't seem to provide a reasonable answer. (ie, plugging in 16/15 for x in the equation ((102+107)/2)x provides a value of 111.47, which doesn't make sense). I also thought about multiplying the average by some sort of percent difference from the target value, but this doesn't seem to work either.

The dataset I have is very large so ideally I'd like to find a formula that I can use in a program to do the calculations for me, rather than doing each calculation by hand. Any help or insight would be appreciated.

- Math - weighted average? -
**Steve**, Wednesday, October 3, 2012 at 2:59pmif you understand interpolation, and you seem to, just think of it this way.

If the value you want is, say, 2/3 of the way from one known value to the next, the readings will also be 2/3 of the way from one value to the next.

so, if you want to place values at 1-unit intervals, you need to step through the given timestamps and whenever you find two timestamps greater than one unit apart, interpolate.

3 and 4.5 are greater than 1 unit apart, so, since 4 is 2/3 of the way between 3 and 4.5, you will generate values 2/3 of the way between those at 3, and those at 4.5.

Since 7 is more than 1 unit away from 4.5, you need to generate data points for times of 5 and 6.

5 is 1/5 of the way from 4 to 7.5

6 is 3/5 of the way.

so, given x-values and y-values,

if x_{n+1}- x_{n}> 1,

for each number x_{k}between x_{n}and x_{n+1},

y_{k}= y_{n}+ (x_{k}-x_{n})/(x_{n+1}-x_{n}) * (y_{n+1}-y_{n})

- Math - weighted average? -
**Steve**, Wednesday, October 3, 2012 at 3:01pmsmall oops. 5 is 2/7 of the way from 4 to 7.5, and 6 is 4/7, and 7 is 6/7.

- Math - weighted average? -
**Kate**, Thursday, October 4, 2012 at 1:14pmThis made a lot of sense, thank you for responding! It was able to incorporate it into my program and it seems to work.