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!

 Respuesta aceptada

madhan ravi
madhan ravi el 9 de Jun. de 2020
Editada: madhan ravi el 9 de Jun. de 2020
-[0, diff(y) ./ diff(x)]

4 comentarios

You forgot to fill the (1) spot.
Sim
Sim el 9 de Jun. de 2020
Editada: Sim el 9 de Jun. de 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....

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

Sim
el 9 de Jun. de 2020

Comentada:

Sim
el 9 de Jun. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by