Filter löschen
Filter löschen

How to find x value for a known Y in array?

9 Ansichten (letzte 30 Tage)
Zeyad Elreedy
Zeyad Elreedy am 11 Dez. 2022
Kommentiert: Zeyad Elreedy am 12 Dez. 2022
I have x and y arrays for a sine wave. I am trying to find the x value for when y is equal to 0, since the y array does not contain a value of 0. How can I do so?

Akzeptierte Antwort

Torsten
Torsten am 11 Dez. 2022
Bearbeitet: Torsten am 11 Dez. 2022
x = 0.1:0.1:4*pi-0.1;
y = sin(x);
i = find(y(1:end-1).*y(2:end) <= 0)
i = 1×3
31 62 94
x_root = x(i)-y(i).*(x(i+1)-x(i))./(y(i+1)-y(i))
x_root = 1×3
3.1416 6.2832 9.4248
[pi,2*pi,3*pi]
ans = 1×3
3.1416 6.2832 9.4248
  4 Kommentare
Torsten
Torsten am 11 Dez. 2022
Bearbeitet: Torsten am 11 Dez. 2022
I determine x(i) and x(i+1) between which y changes sign. Then I approximate the zero between x(i) and x(i+1) by linear interpolating between the points (x(i),y(i)) and (x(i+1),y(i+1)) and determining the x_root value as the x-value where this line crosses the x-axis.
So interp1 is implicitly used in the line
x_root = x(i)-y(i).*(x(i+1)-x(i))./(y(i+1)-y(i))
Zeyad Elreedy
Zeyad Elreedy am 12 Dez. 2022
I understand now. Thanks a lot!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Function Creation finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by