Вероятно, это очень простой и часто задаваемый вопрос, однако я перепробовал множество решений, но ни одно из них не сработало для меня.
У меня есть разные временные ряды, которые содержат NaN в разных местах, поэтому я хочу получить единое решение для их заполнения.
Например :
var1 = [80.2 , 76.5 , NaN , 62.3];
var2 = [NaN , NaN , 100.5 , 102.4];
var3 = [1.2 , 4.7 , NaN, NaN];
Мне просто нужен простой код интерполяции, чтобы я мог получить приблизительные полные данные следующим образом:
var1_filled = fill_vector(var1);
Что я пробовал:
Я пытался использовать naninterp, но так как он кубический, например var3 идет в порядке из 1e4, чего я не хочу. И если я изменю аргумент 'cubic'
на 'linear'
, то он не будет обрабатывать NaN.
Я также пытался сам реализовать аналогичную функцию, которая также не обрабатывает NaN:
dd_x=find(~isnan(dd));
dd_y=dd(~isnan(dd));
yi=interp1(dd_x,dd_y,1:length(dd));