Avoiding for-loops with subsequent elements in arrays

Hi, given this
x = [0 10 20 30];
y = [20 10 10 15];
could you suggest a more compact (and faster) way to perform this operation?
A(1) = (y(1) - y(2)) / (x(2) - x(1));
for i = 2 : 4
A(i) = (y(i-1) - y(i)) / (x(i) - x(i-1));
end
Thanks to everyone!

 Akzeptierte Antwort

madhan ravi
madhan ravi am 9 Jun. 2020
Bearbeitet: madhan ravi am 9 Jun. 2020
-[0, diff(y) ./ diff(x)]

4 Kommentare

You forgot to fill the (1) spot.
Sim
Sim am 9 Jun. 2020
Bearbeitet: Sim am 9 Jun. 2020
Thanks Madhan, it is a nice solution :) but it looks like the first term should not be zero...?! ....maybe in this was we get the entire array:
[A(1) -diff(y) ./ diff(x)]
eh... well looks like you edited your question after I answered. Before since you didn’t preallocate A MATLAB fills the “first” element with “zero” so...
Yes, sorry, I forgot one line....

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Gefragt:

Sim
am 9 Jun. 2020

Kommentiert:

Sim
am 9 Jun. 2020

Community Treasure Hunt

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

Start Hunting!

Translated by