Вы можете использовать ок , который будет линейно интерполировать между вашими точками данных. Вот быстрый пример:
x = sort( rnorm(20) )
y = 1:20
plot(x, y, main = 'function interpolation example' )
points(approx(x, y), col = 2, pch = 3 )
Чтобы указать, сколько точек вы хотите интерполировать, вы можете использовать параметр xout, например:
points( approx( x, y, xout = seq( from = min(x), to = max(x), by = 0.1 ) ), pch = 3, col = 3 )
Для дополнительных точек интерполяции:
points( approx( x, y, xout = seq( from = min(x), to = max(x), by = 0.05 ) ), pch = 3, col = 4 )
В вашем конкретном примере вы захотите сделать что-то вроде интерполяции значений x, y обеих функций, используя пересечение временных точек из обеих машин. Вот одно предложение:
x_interp = unique( sort( c(seq( from = 0, to = 100, by = 5 ), seq( from = 0, to = 100, by = 3 ) ) ) )
x_interp
[1] 0 3 5 6 9 10 12 15 18 20 21 24 25 27 30 33 35
[18] 36 39 40 42 45 48 50 51 54 55 57 60 63 65 66 69 70
[35] 72 75 78 80 81 84 85 87 90 93 95 96 99 100
Затем вы можете использовать этот x_interp в качестве xout для интерполяции между точками с обеих машин:
par( mfrow = c(1,2) )
plot( x_light, y_light )
points(approx(x_light, y_light, x_out = x_interp), col = 2, pch = 3 )
plot( x_flux, y_flux )
points(approx(x_flux, y_flux, x_out = x_interp), col = 3, pch = 3 )
Если вы хотите получить функцию, которая интерполирует значения для произвольных входных данных, см. Связанную функцию, называемую приблизительный .