MATLAB: Higher order polynomial regression

polynomialregression

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 20×1, 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?

Best Answer

  • 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.