Intersection point of yline
Ältere Kommentare anzeigen
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 Kommentare
Star Strider
am 14 Jul. 2020
Straightforward:
lv = find(y1 <= z, 1, 'last');
isx = interp1(y1(lv+[-1 1]),x(lv+[-1 1]),z)
producing:
isx =
-99.9323
Q.E.D.!
madhan ravi
am 14 Jul. 2020
Right ;)
Star Strider
am 14 Jul. 2020
Of course!
Star Strider
am 15 Jul. 2020
Kenneth Bisgaard Cristensen —
With respect to my code, the (x,y) coordinates of the intercept are (isx,z).
Kenneth Bisgaard Cristensen
am 15 Jul. 2020
Star Strider
am 15 Jul. 2020
My pleasure!
Akzeptierte Antwort
Weitere Antworten (1)
neil jerome
am 14 Jul. 2020
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
Kategorien
Mehr zu Labels and Annotations finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!