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!

 Accepted Answer

-[0, diff(y) ./ diff(x)]

4 Comments

You forgot to fill the (1) spot.
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....

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

Sim
on 9 Jun 2020

Commented:

Sim
on 9 Jun 2020

Community Treasure Hunt

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

Start Hunting!