How can I store a matrix without delete the previous one using a loop?

Hi, in my code I´m doing a loop in order to create a 2X4 matrix and the idea is allocate each matrix under the last one, but each time it runs the previous matrix is deleted. my look like this
for i=1:10
for j=1:10
nodo1=[i,j];
nodo2=[i+1,j];
nodo3=[i,j+1];
nodo4=[i+1,j+1];
punto_med=(nodo1+nodo2+nodo3+nodo4)/4;
distancia=sqrt((5-punto_med(1,1))^2+(5-punto_med(1,2))^2);
if distancia <=5
nodos= [nodo1; nodo2; nodo2; nodo3];
nodos_totales(:,:) = nodos
end
end
end
where nodos_totales don´t store all the matrix.
thenk if any one can help me.

 Respuesta aceptada

Jan
Jan el 29 de En. de 2013
Editada: Jan el 29 de En. de 2013
Use a 3D array:
c = 0;
for i=1:10
for j=1:10
...
if distancia <=5
c = c + 1;
nodos_totales(:, c) = [nodo1; nodo2; nodo2; nodo3]
end
Or a cell array:
nodos_totales{c} = [nodo1; nodo2; nodo2; nodo3]
Note: The SQRT is an expensive operation. Instead of comparing sqrt(x) <= 5 it is much cheaper to compare x < 25.
For this small problem of maximum size 10x10 a pre-allocation is not so important. But it is a good programming practice to pre-allocate in any case:
Before the code:
nodos_totales = zeros(4, 100)
and at the end:
nodos_totales = nodos_totales(:, 1:c);

Más respuestas (1)

Juan Vaca
Juan Vaca el 29 de En. de 2013
Hi Jan, thank you very much for your answer it was very useful for solve that problem.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 29 de En. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by