Using previous value to get the next in for loop

Hi guys,
I have what I believe is a simple problem but I cannot manage to get to work!
I have a (6003 x 1) vector of u-values. I want to create a vector of y-values which are defined using the previous value and its corresponding u-value as such:
h=0.1;
y(1) = 0
y(2) = y(1) + h.*u(1)
y(3) = y(2) + h.*u(2) ... etc.
At the moment, my loop is defined as such:
h=0.1;
y(1) = 0;
for k=2:6003
y(k) = y(k-1) + h.*u(k-1)
end
But this makes my command window seemingly run forever. How do I correct this code? Any help is much appreciated!

 Accepted Answer

Stephan
Stephan on 12 May 2021
Edited: Stephan on 12 May 2021
The semicolon operator supresses outputs to the command window:
h=0.1;
y(1) = 0;
for k=2:6003
y(k) = y(k-1) + h.*u(k-1);
end

3 Comments

"But the much better news for you is that you dont need a for loop"
True, but you do realize that your "don't need a loop" code uses data from the loop?
Did you check the output values?
Stephan
Stephan on 12 May 2021
Edited: Stephan on 12 May 2021
oops ;-) - corrected - thank you @Stephen Cobeldick
Thank you both of you!

Sign in to comment.

More Answers (1)

"But this makes my command window seemingly run forever."
So far no one has actually addressed why your code is inefficient, in particular:
  1. lack of array preallocation before the loop,
  2. pointless printing to the command window.
Your code will be quite efficient once you deal with both of those, for example:
h = 0.1;
n = 6003;
y = zeros(1,n);
for k = 2:n
y(k) = y(k-1) + h.*u(k-1);
end

Categories

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

Products

Release

R2021a

Asked:

on 12 May 2021

Commented:

on 12 May 2021

Community Treasure Hunt

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

Start Hunting!