Finding coordinates in a plot
3 views (last 30 days)
Show older comments
Tanmay Singh
on 21 Aug 2021
Commented: Star Strider
on 22 Aug 2021
I have to find halfwidth of a curve I have plotted for this I need to find half of maximum value in the plot and their corresponding coordinates.How do I find it?
2 Comments
Accepted Answer
Star Strider
on 21 Aug 2021
I hope this is not homework!
x = linspace(-5000, 5000, 250);
y = [7.5; 1.9; 0.9] .* exp(-(0.001*[1; 0.85; 0.6] * x).^2);
[ymx,idx] = max(y,[],2);
hafmax = ymx/2;
for k = 1:numel(hafmax)
idxrng1 = find(y(k,1:idx(k))<hafmax(k), 1, 'last');
idxrng2 = find(y(k,idx(k):numel(x))<hafmax(k),1,'first')+idx(k);
xm(k,1) = interp1(y(k,idxrng1+(-3:3)), x(idxrng1+(-3:3)), hafmax(k));
xm(k,2) = interp1(y(k,idxrng2+(-3:3)), x(idxrng2+(-3:3)), hafmax(k));
end
format short g
xm
format short
figure
plot(x, y)
hold on
for k = 1:numel(hafmax)
plot([xm(k,1) xm(k,2)], [1 1]*hafmax(k), '-k', 'LineWidth',1.5)
end
hold off
grid
xlim([-1 1]*2000)
Make appropriate changes with respect to your data.
.
2 Comments
More Answers (1)
darova
on 21 Aug 2021
Use polyxpoly
x1 = 0:.1:pi; % first curve
y1 = sin(x1);
x2 = [0 pi]; % straight line for findinf intersection
y2 = [1 1]*max(y1)/2;
[xc,yc] = polyxpoly(x1,y1,x2,y2);
plot(xc,yc,'.r')
line(x1,y1)
line(x2,y2)
See Also
Categories
Find more on Interpolation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!