How to find x values of specified y point on the graph ?

366 次查看(过去 30 天)
Let say i have two array x[1,2,3,4,5] and y[6, 7,8,9,10 ] i want to find the x values of the 6.34 on the graph. I want to put marker for that point is there any way to do it?

回答(3 个)

Voss
Voss 2022-7-19
x = [1,2,3,4,5];
y = [6,7,8,9,10];
y_point = 6.34;
x_point = interp1(y,x,y_point);
plot(x,y);
hold on
plot(x_point,y_point,'r.')
  4 个评论
erin
erin 2025-2-5,17:53
I seem to be having a problem where I input the code but the point isn't actually on the line of the graph
Voss
Voss 2025-2-5,18:54
@erin: You may need to interpolate over multiple segments separately:
x = [1,2,3,4,5,6,7,8,9,10];
y = [6,7,8,9,10,9.5,8.5,7.5,6.5,5.5];
y_point = 6.34;
idx = find(diff(sign(y-y_point)));
n = numel(idx);
xi = zeros(1,n);
yi = zeros(1,n);
nx = numel(x);
for ii = 1:n
tmp = max(1,idx(ii)-1):min(nx,idx(ii)+1);
xi(ii) = interp1(y(tmp),x(tmp),y_point);
yi(ii) = y_point;
end
plot(x,y,'o-');
hold on
plot(xi,yi,'r.')

请先登录,再进行评论。


Sam Chak
Sam Chak 2022-7-19
Hi Zack,
You can use interp1 technique.

Star Strider
Star Strider 2022-7-19
编辑:Star Strider 2024-11-26
Using the supplied .fig file —
F = openfig('graph1.fig');
Lines = findobj(gca, 'Type','line');
x = Lines.XData;
y = Lines.YData;
yval = 0.0100277; % Choose A Value Within tThe Range Of 'y'
yxi = find(diff(sign(y-yval)));
for k = 1:numel(yxi)
idxrng = max(1,yxi(k)-1) : min(numel(y),yxi(k)+1);
xv(k) = interp1(y(idxrng), x(idxrng),yval);
yv(k) = yval;
end
% figure
% plot(x, y)
hold on
plot(xv, yv, 'rs', 'MarkerSize',10)
hold off
EDIT — (26 Nov 2024 at 12:05)
Ran code here. This was not possible when this post first appeared.
.

类别

Help CenterFile Exchange 中查找有关 Discrete Data Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by