Help with linear fit

3 vues (au cours des 30 derniers jours)
aurc89
aurc89 le 7 Fév 2014
Commenté : aurc89 le 7 Fév 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.

Réponse acceptée

Mischa Kim
Mischa Kim le 7 Fév 2014
Modifié(e) : Mischa Kim le 7 Fév 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 commentaire
aurc89
aurc89 le 7 Fév 2014
It works, thank you very much!

Connectez-vous pour commenter.

Plus de réponses (1)

Jos (10584)
Jos (10584) le 7 Fév 2014
Here's how:
tf = x > x1 & x < x2 % true for x1 < x < x2
p = polyfit(x(tf), y(tf),1) % fit on selection
  1 commentaire
aurc89
aurc89 le 7 Fév 2014
Thanks Jos!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by