MATLAB Answers

0

error message using polyfit (nonlinear regression)

Locks 님이 질문을 제출함. 20 Apr 2013
hi,
I get the following error meesage:
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 71
In deltaAdjustment at 27
In run at 74
The code I am using is the following:
for putCall =1:2
dataPutCall = data16(data16(:,3)==putCall,:);
dates=unique(dataPutCall(:,6));
for i=1:length(dates)
date=dates(i);
dataDate = dataPutCall(dataPutCall(:,6) == date,:);
Ts = unique(dataDate(:,5));
for indexT = 1:length(Ts)
T = Ts(indexT);
dataT = dataDate(dataDate(:,5) == T,:);
number=dataT(:,13);
x= dataT(:,2);
y=dataT(:,10);
p = polyfit(x,y,2);
f = polyval(p,x);
a=p(3);
b=p(2);
c=p(1);
SlopeSkew(number)=b+2*c.*x;
Slope=SlopeSkew';
end
end
end
I have used this code for a smaller matrix and there is was worked perfectly but not it seems as something is not working correctly and I am unsure what excatly it is

  댓글 수: 0

로그인 to comment.

답변 수: 1

bym 님의 답변 20 Apr 2013
 채택된 답변

I think it is obvious from the message; you don't have a enough data points to fit the polynomial uniquely. Like fitting a line through just one point, there are many solutions
x=[1,2];
y = [2,8];
polyfit(x,y,2)
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 72

  댓글 수: 3

You're right, I didn't get it at first because it's working for a smaller dataset. I assume when using polyfit(x,y,2), there are at least three inputs needed to compute the curve up to power of 2, is that correct?
Yes, at least n+1 points for degree n.
perfect, thanks

로그인 to comment.



Translated by