Finding coordinates in a plot
    5 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 Fit Postprocessing 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!

 
      

