Using previous value to get the next in for loop

29 visualizaciones (últimos 30 días)
Joel Childs
Joel Childs el 12 de Mayo de 2021
Comentada: Joel Childs el 12 de Mayo de 2021
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!

Respuesta aceptada

Stephan
Stephan el 12 de Mayo de 2021
Editada: Stephan el 12 de Mayo de 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 comentarios
Stephan
Stephan el 12 de Mayo de 2021
Editada: Stephan el 12 de Mayo de 2021
oops ;-) - corrected - thank you @Stephen Cobeldick
Joel Childs
Joel Childs el 12 de Mayo de 2021
Thank you both of you!

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 12 de Mayo de 2021
Editada: Stephen23 el 12 de Mayo de 2021
"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

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by