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.

 채택된 답변

Mischa Kim
Mischa Kim 2014년 2월 7일
편집: Mischa Kim 2014년 2월 7일

0 개 추천

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개)

Jos (10584)
Jos (10584) 2014년 2월 7일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 Interpolation에 대해 자세히 알아보기

질문:

2014년 2월 7일

댓글:

2014년 2월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by