Fill missing NaN values with Interpolation

I have Matlab 2013, and I want to apply spline interpolation in my data matrix with NaN values. Is there any other method which can do this. As fillmissing functon is not available in lower versions.

댓글 수: 2

doc spline
doc interp1
knnimpute is prefere than spline. you can write the code like this.
clear all;
clc;
Temp = xlsread(A);
Filldata=knnimpute(Temp);

댓글을 달려면 로그인하십시오.

 채택된 답변

KSSV
KSSV 2018년 7월 12일

5 개 추천

a = rand(100,1) ;
% put some NaN's
a(randsample(100,20)) = NaN ;
%%interpolate
x = 1:length(a) ;
a(isnan(a)) = interp1(x(~isnan(a)),a(~isnan(a)),x(isnan(a))) ;
plot(x,a,'.r')
hold on
plot(x,a,'b')

댓글 수: 1

EMMA POLLARD
EMMA POLLARD 2021년 2월 23일
@KSSV Is there a way to use the above method but omit larger gaps of data? For example if there is a string longer than 5NaN values could it avoid interpolating these sections?
Thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

ZaidiN
ZaidiN 2018년 7월 12일

0 개 추천

Is this spline interpolation? Secondly this doesnt fill the locations of NaN with interpolated points.

댓글 수: 1

This is liner interpolation. To make it spline interpolation, add spine as a method of interpolation
a(isnan(a)) = interp1(x(~isnan(a)),a(~isnan(a)),x(isnan(a)), 'spline') ;
It do replace NaNs with interpolated values.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Interpolation에 대해 자세히 알아보기

질문:

2018년 7월 12일

댓글:

2022년 4월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by