Matlab - Crear Matrices Iterativamente

 
Vista:

Crear Matrices Iterativamente

Publicado por Aarón (1 intervención) el 22/10/2010 13:13:36
Hola buenas. Tengo el siguiente problemilla. Necesito crear un número determinado de matrices dentro de un bucle, pero no consigo darles a cada una un nombre, es decir, me gustaría llamarlas, A1, A2, A3...he probado de hacer algo como:

for i = 1:1:20
X = round(N*rand(1))
Y = round(M*rand(1))
'A_' num2str(i) = imcrop(I, [X Y ancho long]);
end

pero me da Parse error at num2str(j): usage appears to be invalid MATLAB syntax.

También he probado la respuesta de un compañero que quería nombrar distintas variables, su solución fue:

for i=1:3
eval(['x_' num2str(i) '=y(i,:)'])
end

Yo lo que quiero es, a partir de una Matrix I, con la función imcrop, ir cogiendo unas X e Y aleatorios e ir guardando esas submatrices en otras, y e aqui mi problema, que no sé cómo declarar esas matrices para ir guardandolas.

Muchas gracias de antemano.

Saludos

Aarón Ribas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Crear Matrices Iterativamente

Publicado por Jorge (226 intervenciones) el 27/10/2010 04:48:24
No se recomienda tener variables A1, A2, A3...

Es mejor indexarlas de alguna manera, del tipo
A(...1), A(...2), A(...3)... porque las puedes poner en iteraciones con A(...i), y así puedes automatizar tu código.

Por ejemplo:

% Forma estas matrices
A(:, :, 1) = [1 2; 3 4];
A(:, :, 2) = [3 4; 6 9];

% Despliégalas
for i = 1 : 2
A(:, :, i)
end

Tienes que emplear las características multidimensionales que tienen las matrices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Crear Matrices Iterativamente

Publicado por Yomismo (8 intervenciones) el 28/10/2010 13:58:43
Buenas,

Creo que tienes que usar lo que comente en otro post.
La solución sería algo así (bueno falta poner el ancho y largo, que tendrías que ponerlo como la X y la Y:

eval(['A_' num2str(i) '=imcrop(' num2str(I) ',[' num2str(X) num2str(Y) ']);'])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar