Missing data values with interpolation
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Emmanuelle
el 7 de Ag. de 2012
Comentada: mostafa mahdi yousef
el 19 de Dic. de 2021
Hello everybody,
I have a cell array each containing a sequence of diferent values. The sequences contains some missing values (I've represented with NaN). I would like to replace all this NaN places with numbers. I think the better way is do an interpolation but I don't know how to code this Nan and how to save it on a table in Matlab.
I1= interp1(x,y,'linear');
Greetings,
Pd) I've tried this but it doesn't work
nanData = isnan(y);
index = 1:numel(y);
data2 = y;
data2(nanData) = interp1(index(~nanData), y(~nanData), index(nanData));
0 comentarios
Respuesta aceptada
Azzi Abdelmalek
el 7 de Ag. de 2012
Editada: Azzi Abdelmalek
el 7 de Ag. de 2012
x={ 1 2 3 4 5 6 7 8 9 10}
y={ 0.3850 NaN 3.0394 NaN 0.6475 1.0000 1.5000 NaN 1.1506 0.58}
x=cell2mat(x);y=cell2mat(y);
xi=x(find(~isnan(y)));yi=y(find(~isnan(y)))
result=interp1(xi,yi,x,'linear')
4 comentarios
Mritula C
el 15 de Dic. de 2018
Hi, im facing the same issue. Can you explain what do you mean by " see ADD in my answer" ?
Más respuestas (2)
Steven Lord
el 15 de Dic. de 2018
1 comentario
mostafa mahdi yousef
el 19 de Dic. de 2021
this is the best answer thanks Steven!
like ypu from IRAN!
Andrei Bobrov
el 7 de Ag. de 2012
Editada: Andrei Bobrov
el 8 de Ag. de 2012
eg
data
Data = cell(1,5);
for jj = 1:5
k = [randi(250,randi([10,15]),1); nan(randi([0 3]),1) ];
Data{jj} = k(randperm(numel(k)));
end
solution
for jj = 1:numel(Data)
n = (1:numel(Data{jj}))';
k = ~isnan(Data{jj});
Data{jj} = interp1(n(k),Data{jj}(k),n,'linear','extrap');
end
ADD
load doc1.txt
x = doc1(:,1);
y= doc1(:,2);
t = all(~isnan([x,y]),2);
out = interp1(x(t),y(t),x,'linear','extrap');
0 comentarios
Ver también
Categorías
Más información sobre NaNs en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!