Programación Específica > Matlab
Problema De Matrices
(1/1)
abartolomec:
Hola a todos, os planteo mi problema para ver si algún avanzado en Matlab puede ayudarme.
Tengo 4 matrices 3x3 y pretendo conseguir todas las combinaciones posibles al juntar estas 4 matrices en fila o en columna.Me explico mejor con un ejemplo:
A1=[1 1 1;1 1 1;1 1 1]
A2=[2 2 2 ;2 2 2;2 2 2]
B1=[3 3 3;3 3 3 ;3 3 3]
B2=[4 4 4;4 4 4;4 4 4]
de estas 4 matrices solo puedo combinar las A con las B (no mezclar A1 con A2 ni B1 con B2) para obtener estos resultados:8 matrices 3x6 (hecho en filas)
M1=[A1 B1]
M2=[A1 B2]
M3=[A2 B1]
M4=[A2 B2]
M5=[B1 A1]
M6=[B1 A2]
M7=[B2 A1]
M8=[B2 A2]
La pregunta es :¿Se puede hacer con bucles 'for'?¿Cómo?Si no se puede,¿hay otra forma?
MUchas gracias de antemano
fa61an:
Si te fija bien tu mismo te respondiste.
Con la linea M1=[A1 B1] "la concatenas" no es exacta mente un mezclado ahora no se si es exactamente lo que necesitas.
Vamos a suponer esto
A1=[1 1 1;1 1 1;1 1 1]
B1=[3 3 3;3 3 3 ;3 3 3]
Al ejecutar M1 = [A1 B1] el resultado es este
--- Código: Text ---1 1 1 3 3 31 1 1 3 3 31 1 1 3 3 3 Pero si lo que tu buscas es el siguiente resultado
--- Código: Text ---1 3 1 3 1 31 3 1 3 1 31 3 1 3 1 3
Se podria hacer utilizando un bucle for o por indexacion de matrices.
Con la siguiente se tiene el resultado pero indexando matrices
--- Código: Text ---M1=[A1(:,1) B1(:,1) A1(:,2) B1(:,2) A1(:,3) B1(:,3)] Esto se puede usar cuando no se tiene buen conocimiento sobre los bucles como el FOR
Espero sirva
abartolomec:
Muchas gracias por responder,pero lo que yo pregunto es todas las combinaciones posibles.En el ejemplo solo puse 4 matrices,pero yo lo quiero hacer para 20,por eso necesito un bucle for y no ir haciéndolas una a una.No se si me explico bien
abartolomec:
y lo que yo busco es la primera forma que hiciste:
M=[A1,B1] las 2 matrices seguidas , no mezcladas
abartolomec:
Yo hice una cosa así,pero no me funciona bien:
a1=[1 2 3];
b1=[3 2 1];
a2=[4 5 6];
b2=[6 5 4];
M=[a1;a2] %Esto es como quiero que queden las matrices (2x3)
for I=[a1 a2]
for J=[b1 b2]
M=[I;J]%Esto es lo que no se hacer:me quedan matrices 2x1 y quiero que sean 2x3
end
end
Navegación
Ir a la versión completa