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

31 visualizzazioni (ultimi 30 giorni)
I need to find the intersection values of x for these two lines between output points
  3 Commenti
Guillaume
Guillaume il 21 Ago 2019
What's a badly behaved line? Sings loudly outside your house at 2AM? Is slightly curvy at the ends?

Accedi per commentare.

Risposta accettata

Star Strider
Star Strider il 21 Ago 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 Commenti
Alex Earle-Sodhi
Alex Earle-Sodhi il 22 Ago 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!

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by