필터 지우기
필터 지우기

Using "isfinite" to skip NAN data

조회 수: 2 (최근 30일)
D.J
D.J 2018년 10월 1일
답변: D.J 2018년 10월 1일

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

채택된 답변

Bruno Luong
Bruno Luong 2018년 10월 1일
편집: Bruno Luong 2018년 10월 1일
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)

추가 답변 (2개)

KSSV
KSSV 2018년 10월 1일

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 2018년 10월 1일
Perfect results ! Thanks a lot Bruno !

카테고리

Help CenterFile Exchange에서 Numeric Types에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by