Problem with interpolating missing data

Hi all, I have the following data:
d=[1:13]'
T_Req3 = [
26 24.6
27.3 26.4
19.3 16.1
24.3 23.3
25.1 21.2
26.2 25.6
29.7 28.7
32.7 30.9
28.5 27.3
30.5 30.3
NAN 33.3
35.5 35.2
26.1 25.4];
I need to find the value of NaN using interpolation. I tried the following code but didn't work: Any help would be highly appreciated. Thank you
Tl1 = T_Req3;
%Using the"find" function to filter the the NAN data
f = find(~isnan(T_Req3(11,:)));
% 4- Using the interpolation function to estimate the value of Tmax29
Tl1(11,1) = interp1(d(f),T_Req3(11,f),1);

 Réponse acceptée

Star Strider
Star Strider le 4 Oct 2018
Try this:
d_T_Req3 = cat(2, d, T_Req3); % Concatenate
idx = ~any(isnan(d_T_Req3), 2); % Logical Index Of Rows Without ‘NaN’
T_new = interp1(d_T_Req3(idx,1), d_T_Req3(idx,2:end), d) % Interpolate
T_new =
26 24.6
27.3 26.4
19.3 16.1
24.3 23.3
25.1 21.2
26.2 25.6
29.7 28.7
32.7 30.9
28.5 27.3
30.5 30.3
33 32.75
35.5 35.2
26.1 25.4

2 commentaires

D.J
D.J le 4 Oct 2018
This is actually a much better answer as it shows both columns,, while the solution provided before displays only one column.
Thank you Star ! much appreciated
Star Strider
Star Strider le 4 Oct 2018
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (1)

Kevin Chng
Kevin Chng le 4 Oct 2018
Modifié(e) : Kevin Chng le 4 Oct 2018
Hi D J,
Hope my code could help you.
T_Req3 = [
26 24.6
27.3 26.4
19.3 16.1
24.3 23.3
25.1 21.2
26.2 25.6
29.7 28.7
32.7 30.9
28.5 27.3
30.5 30.3
NAN 33.3
35.5 35.2
26.1 25.4];
[TF,F] = fillmissing(T_Req3,'linear')
The missing data will be replaced in TF by linear method (Interpolation). F is telling you where is the missing data.
^^
if you want to know what is the filled value for your missing data
TF(F)

4 commentaires

D.J
D.J le 4 Oct 2018
Hi Kevin, thank you for your help, but I am required to use Interpolation, in particular the function "interp1" which is not used in your code, I am afraid.
Kevin Chng
Kevin Chng le 4 Oct 2018
Modifié(e) : Kevin Chng le 4 Oct 2018
no worries, answer is same.
d=[1:13 ]';
T_Req3 = [
26 24.6
27.3 26.4
19.3 16.1
24.3 23.3
25.1 21.2
26.2 25.6
29.7 28.7
32.7 30.9
28.5 27.3
30.5 30.3
nan 33.3
35.5 35.2
26.1 25.4];
%Using the"find" function to filter the the NAN data
f=~isnan(T_Req3);
% 4- Using the interpolation function to estimate the value of Tmax29
NewT_Req3 = interp1(d(f(:,1)),T_Req3(f(:,1)),d)
D.J
D.J le 4 Oct 2018
Modifié(e) : D.J le 4 Oct 2018
Thank you Kevin
Kevin Chng
Kevin Chng le 4 Oct 2018
^^

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interpolation of 2-D Selections in 3-D Grids dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by