Borrar filtros
Borrar filtros

while loop iteration in matlab?

13 visualizaciones (últimos 30 días)
Mary Jon
Mary Jon el 4 de Dic. de 2013
Comentada: Mary Jon el 4 de Dic. de 2013
If I am have this code as example
while(A>0.0000001);
statment
.
.
.
end
How can save value of A to each iteration until reach 0.0000001?
I mean there is (A) at first iteration, (A) at second iteration,and so on

Respuesta aceptada

Walter Roberson
Walter Roberson el 4 de Dic. de 2013
K = 1;
A(K) = .... some initial value ...
while( A(K) >0.0000001)
statment
.
.
.
K = K + 1;
A(K) = new value for A
end
  3 comentarios
dpb
dpb el 4 de Dic. de 2013
doc tic % toc
Mary Jon
Mary Jon el 4 de Dic. de 2013
Thank you dpb

Iniciar sesión para comentar.

Más respuestas (2)

Jeremy Wurbs
Jeremy Wurbs el 4 de Dic. de 2013
If you know how long you're going to iterate for, something like:
numIter = 10;
A_vec = zeros(numIter,1);
A = 10; cnt = 1;
while(A>0)
A_vec(cnt) = A;
A = A-1;
cnt = cnt+1;
end
If you don't know how long you will iterate for you might not be able to preallocate efficiently (which will greatly slow things down). That said, it is legal to do the following:
A_vec = [];
A = 10;
while(A>0)
A_vec(end+1) = A;
A = A-1;
end

dpb
dpb el 4 de Dic. de 2013
A=[];
iter=0;
while...
iter=iter+1;
A(i)=...;
...
end
NB that if iter grows very large the reallocation every iteration above may begin to noticeably slow down the execution. To minimize this, start by preallocating A and filling. You'll have to check for overflow and reallocate if needed or make the initial size large enough to never be exceeded in which case you can then truncate when done.
N=100;
A=zeros(N,1);
iter=0;
while...
if iter==N, A=[A; zeros(1,N)]; N=N+N; end % add another chunk
iter=iter+1;
A(i)=...;
...
end

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by