Higher order polynomial regression

조회 수: 2 (최근 30일)
Marina
Marina 2014년 5월 18일
댓글: Image Analyst 2014년 5월 19일
I have to run a regression of order 5. My X matrix is
102.1750
108.0515
102.1785
100.9413
102.6634
My Y matrix is
0
5.4810
7.6267
24.7082
7.7284
Both X and Y are approxiately 20x1, I just wanted to give an idea how they look like.
I have tried the following:
1. Beta=pinv(X'*X)*(X'*Y);
2. Beta=(X'*X)\(X'*Y);
3. Beta=(X*Y);
4. Beta=polyfit(X,Y,5);
Expected=polyval(Beta,X);
The results are very different. Additionally polyfit/polyval shows the following warning:"Warning: Polynomial is not unique; degree >= number of data points"
Any ideas or suggestions of what am I doing wrong or how or what else can I try? What is the correct way to do it?

채택된 답변

Star Strider
Star Strider 2014년 5월 18일
Give polyfit your entire (20x1) X and Y arrays, not simply the first five values.
Do that, then only use these lines to do your regression:
Beta=polyfit(X,Y,5);
Expected=polyval(Beta,X);
That should work.
  댓글 수: 2
Marina
Marina 2014년 5월 19일
I still get this warning "Polynomial is not unique; degree >= number of data points. " Is there any other way?
Image Analyst
Image Analyst 2014년 5월 19일
You're not passing in all 20 points. You're just passing in 5 of them!!! Prove it by doing this
whos X
whos Y

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2014년 5월 18일
coefficients = polyfit(x, y, 5);
% Put training points back in
yFitted = polyfit(coefficients, x);
plot(x,y, 'bs');
hold on
plot(x, yfitted, 'rd-', 'LineWidth', 3);
grid on;

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by