How can i find the intersection of two lines between points? One of the lines isnt well behaved

30 views (last 30 days)
I need to find the intersection values of x for these two lines between output points
  3 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 21 Aug 2019
Try this:
x = linspace(0, 1, 40); % Create Data
y1 = 1.0592*ones(size(x)); % Create Data
y1(18) = 1.0251; % Create Data
y2 = 0.093*x + 1;
xi = linspace(min(x), max(x), numel(x)*100); % Interpolation Vector
y1i = interp1(x, y1, xi); % Interpolate
y2i = interp1(x, y2, xi); % Interpolate
yd = y1i - y2i; % Difference
zci = @(v) find(v(:).*circshift(v(:), [-1 0]) <= 0); % Returns Approximate Zero-Crossing Indices Of Argument Vector
ydi = zci(yd); % Zero-Crossing Indices
for k = 1:2
ix = (ydi(k)-1):(ydi(k)+1);
xv = xi(ix);
yv = yd(ix);
B = [xv(:), ones(size(xv(:)))] \ yv(:);
xval(k) = -B(2)/B(1); % Intersection X-Coordinates <—
end
y2r = [x(:) ones(size(y2(:)))] \ y2(:); % Regression For ‘y2’
yval = [xval(:) ones(2,1)] * y2r; % Intersection Y-Coordinates <—
figure
plot(xi, y1i)
hold on
plot(xi, y2i)
plot(xval, yval, 'pg')
hold off
grid
Here ‘xval’ are the x-values of the intersection. This computes the associated ‘yval’ vector and plots the points as well.
How can i find the intersection of two lines between points - 2019 08 21.png
  4 Comments
Alex Earle-Sodhi
Alex Earle-Sodhi on 22 Aug 2019
Simply wonderful!
I thought it might have been something to do with that function only via process of elimination aha
I shall apply this to my code,
Thanks alot!

Sign in to comment.

More Answers (0)

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!