How to find maximum vertical distance between reference line and a curve?
7 views (last 30 days)
Show older comments
shagun chaudhary
on 19 Aug 2021
Commented: shagun chaudhary
on 20 Aug 2021
Hi,
I have plotted curve and reference in one graph. I wanted to find the maximum distance between two the line and coresponding x value.
I have used this code.but my answer is not coming right, so can you please help me . I am also showing the graph.
X=e.X;
Y=e.Y;
plot(X,Y);
hold on;
x=e.x
y=e.y;
plot (x,y);
[M,I] = max(abs(Y-y));
display([M,X(I)]);
1 Comment
Fangjun Jiang
on 19 Aug 2021
Is there an error message? The code looks right, except for a case where Y is a row vector but y is a column vector. Then there would be no error but the result is out of whack.
Accepted Answer
DGM
on 19 Aug 2021
Edited: DGM
on 19 Aug 2021
Something like this:
% sample vectors don't share the same x-positions or length
% assuming both x vectors are monotonic increasing
x1 = [1 2 3 4 5];
y1 = [1 2 3 4 5];
x2 = [1.8 3 3.6 4.5 5];
y2 = [3 3.2 4 4.3 5];
% these are the sample locations in the overlap region
xs = unique(sort([x1,x2]));
xs = xs(xs>=max(x1(1),x2(1)) & xs<=min(x1(end),x2(end)));
% calculate distances, maximize
y1f = interp1(x1,y1,xs);
y2f = interp1(x2,y2,xs);
d = y2f - y1f
max(d)
% plot the two curves and show the distances
plot(x1,y1,'ro-',x2,y2,'bo-'); hold on
for l = 1:numel(xs)
plot([1 1]*xs(l),[y1f(l) y2f(l)],'m:')
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!