Finding coordinates in a plot

2 Ansichten (letzte 30 Tage)
Tanmay Singh
Tanmay Singh am 21 Aug. 2021
Kommentiert: Star Strider am 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 Kommentare
darova
darova am 21 Aug. 2021
Where is the curve?
Tanmay Singh
Tanmay Singh am 21 Aug. 2021

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 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
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 Kommentare
Tanmay Singh
Tanmay Singh am 22 Aug. 2021
Thankyou..!
Star Strider
Star Strider am 22 Aug. 2021
As always, my pleasure!
.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

darova
darova am 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)

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by