Intersections between two discretised functions

Hi Everybody, I have the following problem:
I have two vectors:
  • v1 = list of values representing a discretised non monotonic function
  • v2 = list of values representing a constant and horizontal line
v1 has no analytical model. It's just a vector containing the values a function assumes in a given interval.
To make everything clearer, let's consider the following case:
  • v1 = list of 100 values representing a parabola: y= x^2, with x=linspace(-5, +5, 100)
  • v2 = ones(1,100)
f = @(x) x.^2;
values = linspace(-5, 5, 100);
v1 = f(values);
v2 = ones(1,100);
Clearly, the intersection points are two, for x1=-1 and x2=+1.
Now let's forget about the fact that we had the analytical expression for v1 and let's just consider the vector itself.
How can I implement this on Matalb for a generical vector v1 which is not monotonic and is supposed to have two intersection points with v2? I tried doing something with interp1 but couldn't figure it out.
Thanks a lot to whoever will help me!

1 Comment

If you look in the File Exchange you will find at least 4 contributions for finding curve intersections.

Sign in to comment.

 Accepted Answer

You can use FEX submissions for this, I have run these two submissions below - InterX, intersections as example -
You can also find many answers on this forum, which utilize interp1 to get intersection points of two curves.
x = linspace(-5, 5);
v1 = x.^2;
v2 = ones(size(x));
P1 = InterX([x;v1],[x;v2])
P1 = 2×2
-0.9988 0.9988 1.0000 1.0000
[x0, y0] = intersections(x, v1, x, v2)
x0 = 2×1
-0.9988 0.9988
y0 = 2×1
1 1

2 Comments

I didn't know of the existance of these submissions, thank you Dyuman.

Sign in to comment.

More Answers (1)

f = @(x) x.^2;
x = linspace(-5, 5, 100);
v1 = f(x);
v2 = ones(size(v1));
X0=x(diff(sign(v1-v2))~=0);
X=nan(size(X0));
for i=1:numel(X)
X(i)=fzero(@(t)interp1(x,v1-v2,t,'cubic'), X0(i));
end
X %solutions
X = 1×2
-1.0000 1.0000

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!