2014-11-06 4 views
0

У меня есть следующий набор данные:Использование interp1 с временными рядами

27/10/2014,11:45:00,231 
27/10/2014,12:00:00,229 
27/10/2014,12:15:00,NaN 
27/10/2014,12:30:00,NaN 
27/10/2014,12:45:00,227 
27/10/2014,13:00:00,225 
27/10/2014,13:15:00,NaN 
27/10/2014,13:30:00,NaN 
27/10/2014,13:45:00,222 
27/10/2014,14:00:00,221 
27/10/2014,14:15:00,NaN 
27/10/2014,14:30:00,NaN 
27/10/2014,14:45:00,219 
27/10/2014,15:00:00,218 
27/10/2014,15:15:00,NaN 
27/10/2014,15:30:00,NaN 
27/10/2014,15:45:00,214 

Мне нужно интерполировать недостающие данные, используя interp1 команду:

date_string = strcat (dados.textdata(2:end,2),{' '}, dados.textdata(2:end,3)); 
xdate = datenum (date_string, 'dd/mm/yyyy HH:MM:SS'); 
xi = (1 :length(xdate))'; 
yi = interp1 (xdate,dados.data,xi); 

Однако, уг возвращает только Нэн.

Как я могу построить интерполированные значения?

+1

Удалите из пренебрежимо малых входных данных. – AnonSubmitter85

ответ

3

Как упоминалось в @ AnonSubmitter85, вы сначала должны удалить нан с входа. Это может быть сделано путем:

r = ~isnan(dados.data); 
yi = interp1(xdate(r),dados.data(r),xi); 

Однако, вы, вероятно, также хотите использовать xdate, а не xi в качестве аргумента для интерполированных данных.

yi = interp1(xdate(r),dados.data(r),xdate); 

Выход затем enter image description here

Смежные вопросы