MATLAB Answers

# 2nd order polynomial fitting with NaNs

94 ビュー (過去 30 日間)
Nikos Makris 2011 年 1 月 24 日
I want to fit a 2nd order polynomial to my data
x=(1,256) y=(1,256)
Only 40 cells from each side of the y array include values, the rest are NaN. So far i have used the polyfit() function but it does not work when the y array contains NaNs. Another function is interp1() which works properly but the fitting methods are limited (no polynomial option).
Are you aware of any other function that is suitable for this problem?

サインインしてコメントする。

### 採用された回答

Egon Geerardyn 2011 年 1 月 24 日
Try indexing your data points to your non-NaN-points
Let's just work on an example:
%%just generating data
x = 1:10;
y = x.^2 + randn(size(x));
y(4) = NaN; %I introducce a NaN in y
%%getting indices where y is valid (not NaN)
idxValid = ~isnan(y);
%%fitting
poly = polyfit(x(idxValid),y(idxValid),2);
%%plot
figure;
plot(x,y,'xr','DisplayName','Data points'); hold on;
plot(x,polyval(poly,x),'DisplayName','Fitted'); hold off;
legend('show')
As you will see: this fits only the non NaN data.
##### 3 件のコメント表示非表示 2 件の古いコメント
Nikos Makris 2011 年 1 月 25 日
Ok i got it! I misunderstood your 1st answer...This is what i was looking for
Thanks Egon

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!

Translated by