Using "isfinite" to skip NAN data

6 views (last 30 days)
D.J
D.J on 1 Oct 2018
Answered: D.J on 1 Oct 2018

Hi all,

I have 2 set of data, each of which is 31*12 (31 for number of days, and 12 for months)

Set1 = T3_All (%x-values)
Set2 = Tmax_All (%y values)

Since we don't have more than 28 or 29 days for some months, the data is filled with NAN.

when i use ployfit (code below), I am getting NaN for all values. I think that is because my arrays include NaN values.

How can I get the polyfit function pass the data that contains nan, using isfinite?

Here is my code:

% Assigning arrays to data
T3_All=AllT3_Import;
Tmax_All=AllTmax_Import;
% Determining coefficients
coeff1 = polyfit(T3_All,Tmax_All,1); 
And the results I am getting:
coeff1 =
   NaN   NaN

P.S. I have posted this question before, although the answer provided was excellent, but it solved the problem using "mask". We are required to use "isfinite".

Many thanks

Accepted Answer

Bruno Luong
Bruno Luong on 1 Oct 2018
Edited: Bruno Luong on 1 Oct 2018
isvalid = isfinite(T3_All) & isfinite(Tmax_All);
coeff1 = polyfit(T3_All(isvalid),Tmax_All(isvalid),1)

You would recognize it is a mask, if your professor doesn't like it, ask why, because the mo mask solution is slower and less visible.

ikeep = find(isfinite(T3_All) & isfinite(Tmax_All));
coeff1 = polyfit(T3_All(ikeep),Tmax_All(ikeep),1)

More Answers (2)

KSSV
KSSV on 1 Oct 2018

You have two options:

1. Use interpolation to fill the nan's and then use polyfit.

2. Remove NaN's using isnan and then fit the data.


D.J
D.J on 1 Oct 2018
Perfect results ! Thanks a lot Bruno !

Tags

Community Treasure Hunt

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

Start Hunting!