Fill missing NaN values with Interpolation

126 visualizzazioni (ultimi 30 giorni)
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 Commenti
Tsehaye Gebreteklie
Tsehaye Gebreteklie il 19 Apr 2022
knnimpute is prefere than spline. you can write the code like this.
clear all;
clc;
Temp = xlsread(A);
Filldata=knnimpute(Temp);

Accedi per commentare.

Risposta accettata

KSSV
KSSV il 12 Lug 2018
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 Commento
EMMA POLLARD
EMMA POLLARD il 23 Feb 2021
@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

Accedi per commentare.

Più risposte (1)

ZaidiN
ZaidiN il 12 Lug 2018
Is this spline interpolation? Secondly this doesnt fill the locations of NaN with interpolated points.
  1 Commento
Pawan Sharma
Pawan Sharma il 12 Mag 2020
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.

Accedi per commentare.

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by