Need to find a specific point on a line using data from a 2 column matrix
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
The variable WL is a 2686x3 matrix
the first plot is what I'm working with which plots wl(:,1) against wl(:,2) (the blue line)
my problem is that I have a value in wl(:,2) equal to 4.12332783. I need to find the corresponding value in wl(:,1).
The issue is that although I'm using the interp1 commmand correctly, the point it gives me is not on the line where it needs to be for some reason. I'll attach a picture of the graph for reference.

clc
clear
load 'bumpt test.mat'
x=wl(:,1);
y=wl(:,2);
figure (1)
plot (x,y)
hold on
plot (wl(:,1),wl(:,3))
[ymin imin]=min(wl(:,2));
xmin=x(imin);
style='ro';
markersize=10;
plot(x(imin),ymin,style,'MarkerSize',markersize)
[ymax imax]=max(wl(:,2));
xmax=x(imax);
plot(x(imax),ymax,style,'MarkerSize',markersize)
y0=4.12332783;
x_point=interp1(wl(:,2),wl(:,1),4.12332783);
plot(x_point,y0,style,'MarkerSize',markersize)
2 comentarios
dpb
el 5 de Feb. de 2025
Attach the .mat file; can't really diagnose just looking at the picture; particularly since you don't distinguish which red circle is which nor explain exactly what you were expecting.
Respuestas (1)
Walter Roberson
el 5 de Feb. de 2025
Your y data has multiple different x values for most y values. Interpolating using y as the independent variable and x as the dependant variable is almost certain to give unexpected results. You have at least three different places where y crosses 4.12332783 and the way you are doing the interpolation you could get any of those locations (and possibly a strange location if interp1() effectively sorts the independant coordinate first.)
You need to isolate ranges. For example,
target = 4.12332783;
mask = sign(y - target).';
mask = (y(1:end-1) <= target & y(2:end) >= target) | ...
(y(1:end-1) >= target & y(2:end) <= target));
search_positions = find(mask);
Now the target was crossed between y(search_positions) and y(search_positions + 1).
Perhaps knowing that is close enough, without bothering to interp1 to get a more exact position.
0 comentarios
Ver también
Categorías
Más información sobre Line Plots en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!