how to make trendline in matlab using polyfit command?
17 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Pritha Pande
am 22 Mai 2017
Beantwortet: Alex Backer
am 1 Jun. 2020
I have 1:37 values in x-axis.X-axis represents years ranging from 1980 to 2016 and 1:37 values in y axis represents value of ozone data. So for this the command i am running is a=xlsread('H:\season\Ranking.xlsx','Sheet4'); x=[1:37] for i=1:37; slope(i)=polyfit(x,a(:,i)',2); end; Help me in correcting it.
2 Kommentare
Jan
am 22 Mai 2017
Before we can correct this, you have to explain, what is wrong. Do you get an error message or do the results differ from yopur expectations? In the latter case, please explain both.
Akzeptierte Antwort
Star Strider
am 22 Mai 2017
Bearbeitet: Star Strider
am 22 Mai 2017
You only need to do this:
prms = polyfit(x,a,1);
to get a linear (first-degree polynomial) trend, with ‘prms(1)’ being the slope and ‘prms(2)’ the intercept. Here, ‘x’ and ‘a’ both have to have the same row and column sizes. (The last argument to polyfit is 2 if you want a quadratic fit.)
Use the polyval function to evaluate the line so you can plot it.
EDIT — (18:34 UTC)
‘i want my trendline to touch every point on graph.(so that it gives clearer picture where and to what extend line is rising or falling)’
Use the interp1 function with 'spline' or some other method appropriate to what you want to do.
B = [1980 1981 1982 1983 1984 1985 ];
C = [0.500 0.500 0.756 0.662 0.605 0.579];
Bi = linspace(min(B), max(B));
trend_line = interp1(B, C, Bi, 'spline');
figure(1)
plot(B,C,'pg', Bi,trend_line,'-r')
grid
See the documentation on interp1 for details and method options.
2 Kommentare
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Polynomials finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!