Interpolating missing values according to time vector

2 vues (au cours des 30 derniers jours)
David E.S.
David E.S. le 22 Fév 2021
Commenté : David E.S. le 22 Fév 2021
Hi!
I want to interpolate the missing values of this vector:
x=[2 6 8 10 NaN NaN NaN NaN 21 59 NaN 12 80];
but, instead of using the intermediate values in each case, I want to interpolate according another vector of "serial times", for example:
time=[738097.24, 738097.253, 738097.261, 738097.4, 738097.53, 738097.69, 738097.81, 738097.8129, 738097.91, 738098.0, 738098.3, 738098.49, 738098.79];
That means, the values between x(4) and x(9) must respect the sequence given in the time vector.
Is there any form to do that automatically?
Thanks!
  1 commentaire
dpb
dpb le 22 Fév 2021
I have no idea what you mean or expect the result to be???

Connectez-vous pour commenter.

Réponse acceptée

Cris LaPierre
Cris LaPierre le 22 Fév 2021
Sure. You just have to separate your knowns and unknowns.
x=[2 6 8 10 NaN NaN NaN NaN 21 59 NaN 12 80]';
time=[738097.24, 738097.253, 738097.261, 738097.4, 738097.53, 738097.69, 738097.81, 738097.8129, 738097.91, 738098.0, 738098.3, 738098.49, 738098.79];
% Create index of known values
indKnown = ~isnan(x);
% interpolate to obtain values of unknown values
x(~indKnown) = interp1(time(indKnown),x(indKnown),time(~indKnown))
x = 13×1
2.0000 6.0000 8.0000 10.0000 12.8039 16.2549 18.8431 18.9057 21.0000 59.0000
  1 commentaire
David E.S.
David E.S. le 22 Fév 2021
That's exactly what I want! Thanks!!

Connectez-vous pour commenter.

Plus de réponses (1)

Bob Thompson
Bob Thompson le 22 Fév 2021
I don't know if there is a single command that would do what you're asking, though others might know of one.
A fairly concise way of finishing the array though is the following:
x(isnan(x)) = interp1(time(~isnan(x)),x(~isnan(x)),time(isnan(x)));
  1 commentaire
David E.S.
David E.S. le 22 Fév 2021
Thanks!! I can't accept more than one anwser, but the code is just perfect and fulfills its function!!

Connectez-vous pour commenter.

Produits


Version

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by