Help with linear fit

3 visualizzazioni (ultimi 30 giorni)
aurc89
aurc89 il 7 Feb 2014
Commentato: aurc89 il 7 Feb 2014
Given a curve (x vs y) I need to do a linear fit but only between two points x1 and x2 of that curve. Then, I need to calculate the slope of this line. Could you suggest me the fastest way to do that? Thanks.

Risposta accettata

Mischa Kim
Mischa Kim il 7 Feb 2014
Modificato: Mischa Kim il 7 Feb 2014
Here is one way:
x = 0:0.05:1; % define data
y = sin(x).^2;
x1 = x(10); % define interval
x2 = x(20);
xrange = x(find(x == x1):find(x == x2)); % pick out x and y vals in interval
yrange = y(find(x == x1):find(x == x2));
p = polyfit(xrange, yrange, 1); % do linear curve fit
yfit = polyval(p, xrange);
figure
hold on; grid; box
plot(x,y,xrange,yfit,'-r')
The first element of p is the slope of the linear curve.
  1 Commento
aurc89
aurc89 il 7 Feb 2014
It works, thank you very much!

Accedi per commentare.

Più risposte (1)

Jos (10584)
Jos (10584) il 7 Feb 2014
Here's how:
tf = x > x1 & x < x2 % true for x1 < x < x2
p = polyfit(x(tf), y(tf),1) % fit on selection

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by