Extend a line made with polyfit and polyval
조회 수: 14 (최근 30일)
이전 댓글 표시
Hi
I have a problem with extending my polyfit line. I tried to extend it by changing "T" for polyval (which is temperature and x-axis) to contain the whole dataset for temperature to get an extended line ranging the whole plot. I wanted a line that was extended like 4 degrees celsius, but wanted to checking if it worked by including the whole data set first. It did not. All the y-values decreased and the extended line does not look linear any more.
Should this solution work, and if so what have I done wrong?
Is there another solution to extend the line?
Thanks a lot for the help
% Getting index for temperature values
[d,posmin] = min(abs(x11-0));
[d,negmax] = min(x11-10);
x111 = x11(negmax:lastrow11);
[d,negmin1] = min(abs(x111-0));
negmin = negmax+negmin1-1;
% Getting x and y values
T11 = x11(1:posmin); A11 = y11(1:posmin);
T12 = x11(posmin:negmax); A12 = y11(posmin:negmax);
T13 = x11(negmax:negmin); A13 = y11(negmax:negmin);
T14 = x11(negmin:lastrow11); A14 = y11(negmin:lastrow11);
% Fitting values
[p11,s11] = polyfit(T11,A11,1);
f11 = polyval(p11,wholedataset);
[p12,s12] = polyfit(T12,A12,1);
f12 = polyval(p12,T12);
[p13,s13] = polyfit(T13,A13,1);
f13 = polyval(p13,T13);
[p14,s14] = polyfit(T14,A14,1);
f14 = polyval(p14,T14);
댓글 수: 1
채택된 답변
Star Strider
2018년 12월 17일
You are doing linear regressions, so extending the line is not a problem. (It easily could be a problem with higher-order polynomials.)
It is not necessary to do new regressions to extend the line. Just the same polynomial values with new limits:
p11 = polyfit((1:10)', 2*(1:10)'+randn(1,10)', 1); % Original Linear Regressopm
orig = polyval(p11, (1:10)'); % Evaluated
xtnd1 = polyval(p11, [-5 15]); % Extend Using ‘p11’ With New Limits
figure
plot((1:10), orig, 'b-', [-5 15], xtnd1, '--r')
grid
댓글 수: 2
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Polynomials에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!