How to find x values of specified y point on the graph ?
    조회 수: 114 (최근 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? 
댓글 수: 0
답변 (3개)
  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
 2025년 2월 5일
				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
      
      
 2025년 2월 5일
				@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.')
  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.  
.
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


