Is it possible to use Matlab to get expressions for the coefficients in polynomial regression? (I.e., not just constant coefficients)
조회 수: 3 (최근 30일)
이전 댓글 표시
I'm trying to modify one section of an old code so that it uses my new data for one of its parameters. The code expresses an equation as a fourth-order power series in X and y. I know how to do polynomial regression on a curve like the one below to get an expression like:
Phi=k0+k1y+k2y2+k3y3+k4y4
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1011220/image.jpeg)
However, my problem is that the code uses a more sophisticated expression for k. I.e.,
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1011225/image.jpeg)
I need to express the k this way (in terms of a coefficients) because they're needed elsewhere in the code. Right now, the a coefficients are provided in a table in the code, but I have no idea how to calculate them.
I'm comfortable using Matlab and would be grateful if someone could tell me whether there is a way to do polynomial regression for a fourth-order power series (based on curves like the one in the top figure above) and get the coefficients in terms of a coefficients as shown in the figure above. I have looked around but it does not seem like it is possible. For example "multiple linear regression" and "multivariate regression" don't seem to do what I need. Maybe they do though and I'm not experienced enough to see it? Thank you for any advice.
댓글 수: 2
Torsten
2022년 5월 25일
So X and Y are independent variables and phi = f(X,Y) ?
I ask this because in your ansatz for phi
phi = k0 + k1*Y + k2*Y^2 + k3*Y^3 + k4*Y^4
X as variable does not appear.
채택된 답변
Torsten
2022년 5월 25일
M = [X.^(-1).*Y,X.^(-1).*Y.^2,Y.^2,X.*Y.^2,X.^(-1).*Y.^3,X.*Y.^3,X.^2.*Y.^3,X.^(-2).*Y.^4,X.^(-1).*Y.^4,Y.^4];
b = PHI - 1.0;
a = M\b;
where X,Y and PHI are column vectors of the same size.
Here, a(i) = ai in your problem description.
댓글 수: 7
Torsten
2022년 5월 26일
It makes sense that the a coefficients are going to be in the form of a vector, but I'm hung up on what Bruno has done to get his "M = " expression.
M*a = b
written out gives
x^(-1)*y*a(1)+x^(-1)*y^2*a(2)+y^2*a(3)+x*y^2*a(4) ... = PHI - 1
thus your model function equation.
You want to solve this equation for a, thus
a = M\b
추가 답변 (1개)
Walter Roberson
2022년 5월 25일
For each equation divide both sides by the highest negative coefficient,
k4(Xhat)/Xhat^(-2) = a8*Xhat^(-2)/Xhat^(-2) + etc
k4(Xhat)*Xhat^2 = a8 + a9*Xhat + a10*Xhat^2
subtract left from right and you have a standard polynomial that you can do fitting on
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!