Matlab - Crear una matriz a partir de otra

 
Vista:
Imágen de perfil de Juan Carlos Villafuerte Zamacona
Val: 44
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz a partir de otra

Publicado por Juan Carlos Villafuerte Zamacona (22 intervenciones) el 10/06/2019 06:52:08
Tengo la idea de crear una matriz usando las permutaciones (de 2 en 2) de las filas de una matriz ya existente.
La permutación puede irse iterando sobre una sola matriz o se pueden generar varias matrices, sobre esta o estas se va a aplicar una condición de dependencia o independencia lineal (que ya se tiene)
Digamos que se tiene esta matriz

A=[ 1 2 3;4 5 6;7 8 9]

Entonces la primer matriz sería

[1 2 3; 4 5 6]

la 2a permutación seria

[1 2 3; 7 8 9]

la 3a permutación

[4 5 6; 1 2 3]

4a:
[4 5 6; 7 8 9]

5a
[7 8 9; 1 2 3]

6a
[7 8 9: 4 5 6]

Las permutaciones pueden ser con/sin repetición y la matriz preexistente puede ser de MxN (aunque tampoco se esperan cientos de filas o columnas) es decir se necesita generalizar para evitar ajustar el código cada vez.
Ejemplo a mano y fijo para este matriz dada anteriormente:

1
2
3
4
5
6
7
8
9
10
11
A=[ 1 2 3;4 5 6;7 8 9]  //matrix de 3x3
for k=1:size(A,1) //copia los valores a
    eval(['V' '=A(k,:)'])//otra matriz llamada V
end                         //renglón por renglón
 
W0= [V1;V2]           //nueva matrices con el 1o y 2o renglón
W1= [V1;V3]           //nueva matrices con el 1o y 2o renglón
W2=[V2; V1]           //2o y 1o
W3=[V2;V3]            //2o y 3o
W4=[V3; V1]           //3o y 1o
W5=[V3;V2]            //3o y 2o


Se ve medio cavernícola, pero esto ilustraria las permutaciones para el caso, como mencione no importa si son con o sin repeticion, y no entiendo como hacer un for para ir tomando los renglones 2 a la vez guardarlos en otra matriz y recorrer la fila para formar una nueva matriz.
Gracias desde ya.
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
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz a partir de otra

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 10/06/2019 11:19:57
1
2
3
4
5
6
A=[ 1 2 3;4 5 6;7 8 9]
b=nchoosek(1:size(A,1),2);
for k=1:size(b,1)
    eval(['W' num2str(k*2-2) '=A(b(k,:),:)'])
    eval(['W' num2str(k*2-1) '=A(fliplr(b(k,:)),:)'])
end


A =

1 2 3
4 5 6
7 8 9


W0 =

1 2 3
4 5 6


W1 =

4 5 6
1 2 3


W2 =

1 2 3
7 8 9


W3 =

7 8 9
1 2 3


W4 =

4 5 6
7 8 9


W5 =

7 8 9
4 5 6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juan Carlos Villafuerte Zamacona
Val: 44
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz a partir de otra

Publicado por Juan Carlos Villafuerte Zamacona (22 intervenciones) el 10/06/2019 17:13:53
WoW!! Funciona de maravilla, disculpa si no es mucha más molestia podrías comentar que es lo que hace el operador range (:) en las expresiones anteriores, ya que no se interpretar que pasa en esa parte.

1
2
....A(b(k,:),:)'])
....A(fliplr(b(k,:)),:)'])

supongo que se va concatenando los valores de renglones y filas, pero no logro ver bien que pasa. Estas partes siempre se me indigestan en el matlab.
Muchas gracias nuevamente
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
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear una matriz a partir de otra

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 10/06/2019 20:41:01
El : significa todas las columnas cuando va en la segunda dimensión, por ejemplo A(4,:) significaría qie daría todas las columnas de A pero solo la fila 4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar