How to get the intersection points of a line and a curve which was fit to data?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi,
I have a line and a curve that was fit to a data. I also get Coefficients of Equation of the Curve, but don't know how to find its equation to make two equations equal to find the points of the tangency. Could someone give me some recommends?
Here is my code:
clc
array=[515 525 561 600 632 700 761 800 900 1000 1014 1750;
0 150 300 394 450 540 600 631 696 745 750 865];
x=linspace(array(1,1),array(1,end),101)
y=interp1(array(1,:),array(2,:),x,'pchip')
x=transpose(x)
y=transpose(y)
%
f=fit(y,x,'pchip')
a=coeffvalues(f)
plot(f,y,x)
hold on
% Equation of line that pass through origin
x1=0:1000;
slope=tan(51.5*pi/180);
y1=slope*x1
plot(x1,y1)
댓글 수: 0
채택된 답변
Andrei Bobrov
2014년 10월 24일
편집: Andrei Bobrov
2014년 10월 25일
one way with Curve Fitting Toolbox
array=[515 525 561 600 632 700 761 800 900 1000 1014 1750;
0 150 300 394 450 540 600 631 696 745 750 865];
x = array([2 1],:)';
f = fit(x(:,1),x(:,2),'cubicinterp');
df = fit(x(:,1),differentiate(f,x(:,1)),'cubicinterp');
xx = fzero(@(x)f(x)/x - df(x),[1 750]);
x1 = linspace(x(1,1),x(end,1),300);
plot(x1,f(x1),x1,x1*df(xx),xx,f(xx),'ro');
well, more
f = fit(x(:,1),x(:,2),'cubicinterp');
df = fit(x(:,1),differentiate(f,x(:,1)),'cubicinterp');
k = tand(10);
xx = fzero(@(x)df(x) - k,[1 x(end,1)]);
you line: y = k*x + b
b = f(xx) - k*xx;
x1 = linspace(x(1,1),x(end,1),300);
plot(x1,f(x1),x1,k*x1 + b,xx,f(xx),'ro');
댓글 수: 8
Hussein Qenawy
2019년 4월 13일
편집: Hussein Qenawy
2019년 4월 13일
Good evening Mr andrie.. Iam studying matlab now... I have 4 problems need to solve by matlab. I need your help to solve these problems for money.. If it's OK for you.. Contact me whatsapp 0097430272448. Thanks
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Interpolation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!