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

[0] Índice de Mensajes

Ir a la versión completa