Finding coordinates in a plot

3 vues (au cours des 30 derniers jours)
Tanmay Singh
Tanmay Singh le 21 Août 2021
Commenté : Star Strider le 22 Août 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 commentaires
darova
darova le 21 Août 2021
Where is the curve?
Tanmay Singh
Tanmay Singh le 21 Août 2021

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 21 Août 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
xm = 3×2
-832.87 832.87 -979.71 979.71 -1387.7 1387.7
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 commentaires
Tanmay Singh
Tanmay Singh le 22 Août 2021
Thankyou..!
Star Strider
Star Strider le 22 Août 2021
As always, my pleasure!
.

Connectez-vous pour commenter.

Plus de réponses (1)

darova
darova le 21 Août 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)
  1 commentaire
Tanmay Singh
Tanmay Singh le 22 Août 2021
thanks alot..!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by