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!

 Risposta accettata

madhan ravi
madhan ravi il 9 Giu 2020
Modificato: madhan ravi il 9 Giu 2020
-[0, diff(y) ./ diff(x)]

4 Commenti

You forgot to fill the (1) spot.
Sim
Sim il 9 Giu 2020
Modificato: Sim il 9 Giu 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....

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Richiesto:

Sim
il 9 Giu 2020

Commentato:

Sim
il 9 Giu 2020

Community Treasure Hunt

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

Start Hunting!

Translated by