Intersection point of yline

조회 수: 17 (최근 30일)
Kenneth Bisgaard Cristensen
Kenneth Bisgaard Cristensen 2020년 7월 14일
댓글: Star Strider 2020년 7월 15일
Hi,
I have tried some diffrent metods, but so far without any luck. Is there a way to show the x,y coordinates of the intersection point of yline and the f1?
x=[-150:5:0, 0:5:100]
hold on
z=50
yline((z),'--r');
f1=[5E-08 -3E-05 -0.0058 1.0479 177.56]
y1=polyval(f1,x)
plot(x,y1)
grid on
  댓글 수: 6
Kenneth Bisgaard Cristensen
Kenneth Bisgaard Cristensen 2020년 7월 15일
Yeah, got that. Thanks for the help :)
Star Strider
Star Strider 2020년 7월 15일
My pleasure!

댓글을 달려면 로그인하십시오.

채택된 답변

madhan ravi
madhan ravi 2020년 7월 14일
x=[-150:5:0, 5:100];
INTERSECTION = interp1(y1,x,z)
  댓글 수: 3
madhan ravi
madhan ravi 2020년 7월 14일
p2 = interp1(y2,x,z)
Kenneth Bisgaard Cristensen
Kenneth Bisgaard Cristensen 2020년 7월 14일
It still gives me this error:
Error using matlab.internal.math.interp1
Sample points must be unique and sorted in ascending order.
Error in interp1 (line 154)
VqLite = matlab.internal.math.interp1(X,V,method,method,Xqcol);
Error in Impact_Temp (line 23)
p2 = interp1(y2,x,z)

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

neil jerome
neil jerome 2020년 7월 14일
the code below shows how to 'brute force' a numerical answer, down to a precision you can adjust, by iteratively 'zooming in' on the region. for an analytical answer, matlab probably isn't the right tool :)
good luck!
n.
%% converge by using smaller increments
thresh = 0.000000000001; % choose precision of stopping criterion for 'y1 = z'
increment = 5;
x = -150:increment:100;
f1 = [5E-08 -3E-05 -0.0058 1.0479 177.56];
z = 50;
iteration = 1;
residual = 1;
while residual > thresh
y1 = polyval(f1,x);
% find closest point in current x vector
signal = y1-z;
smallestDiff = min(abs(signal));
closestPoint = find(abs(signal) == smallestDiff);
closestCoord = [x(closestPoint) y1(closestPoint)];
residual = smallestDiff;
% plot to show progressive zooming in
figure; hold on;
yline(z, 'r--');
plot(x, y1);
plot(x(closestPoint), y1(closestPoint), 'ro');
grid on;
pause; % press any key to continue
close;
% show progress
disp([ num2str(iteration) ' ' num2str(closestCoord(1)) ', ' num2str(closestCoord(2)) ', residual: ' num2str(residual)]);
% iterate
increment = increment/10;
x = x(closestPoint - 10):increment:x(closestPoint+10);
iteration = iteration + 1;
end
format long;
disp('converged at:');
closestCoord

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by