Clear Filters
Clear Filters

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

4 views (last 30 days)
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?

Accepted Answer

Torsten
Torsten on 11 Dec 2022
Edited: Torsten on 11 Dec 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 Comments
Torsten
Torsten on 11 Dec 2022
Edited: Torsten on 11 Dec 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))

Sign in to comment.

More Answers (0)

Categories

Find more on Function Creation in Help Center and File Exchange

Tags

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!