Help with linear fit

3 visualizaciones (últimos 30 días)
aurc89
aurc89 el 7 de Feb. de 2014
Comentada: aurc89 el 7 de Feb. de 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.

Respuesta aceptada

Mischa Kim
Mischa Kim el 7 de Feb. de 2014
Editada: Mischa Kim el 7 de Feb. de 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 comentario
aurc89
aurc89 el 7 de Feb. de 2014
It works, thank you very much!

Iniciar sesión para comentar.

Más respuestas (1)

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

Categorías

Más información sobre Interpolation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by