Matlab - Combinaciones vectores

   
Vista:

Combinaciones vectores

Publicado por Omar (2 intervenciones) el 03/09/2012 00:13:18
queria ver si hay alguna solucion para mi problema. Lo que quiero hacer es encontrar las diferentes combinaciones que se pueden hacer con vectores.

He visto que en matlab esta la funcion nchoosek, pero esta me combina solo un vectores, quiero hacer esto mismo pero combinando dos vectores.

Te pongo un ejemplo de mi problema:

Si tengo A=[1 2] y B=[3 4] quiero como respuesta las combinaciones de los dos vectores, como solo tengo dos vectores seria en combinaciones de 2

C=[1 3;
1 4;
2 3;
2 4];

Otro ejemplo si en ves de eso tengo: A=[1 2] , B=[3 4] y C=[5 6 7]

D=[1 3 5;
1 3 6;
1 3 7;
1 4 5;
1 4 6;
1 4 7;
2 3 5;
2 3 6;
2 3 7;
2 4 5;
2 4 6;
2 4 7];

Hay alguna funcion que haga esto o alguna forma de como poder hacer, le agredeceria mucho su ayuda.
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 Dave

Combinaciones vectores

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 03/09/2012 14:28:34
Hola Omar;

A continuación te sugiero una solución;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
% Para el caso de dos vectores A,B
clc,clear all
A=[1 2];
B=[3 4];
n=1;
for i=1:length(A)
    for j=1:length(B)
            V1(n,:)=([A(i),B(j)]');
            n=n+1;
    end
end
V1

% Para el caso de tres vectores A,B,C
% return

clc,clear all
A=[1 2];
B=[3 4];
C=[5 6 7];
n=1;
for i=1:length(A)
    for j=1:length(B)
        for k=1:length(C)
            V2(n,:)=([A(i),B(j),C(k)]')
            n=n+1;
        end
    end
end
 
V2



Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

Combinaciones vectores

Publicado por Omar (2 intervenciones) el 12/09/2012 09:33:53
A lo que me refería es hacer un subrutina que me funcione para cualquier cantidad de vectores, no solo puedo tener combinaciones de 2 o 3 valores sino que puede ser para cualquier cantidad, sin tener que hacer manualmente la combinación en el bucle, porque puedes llegar a hacer cantidades grandes.
De todos modos gracias por la respuesta, pero esta forma ya lo sabia, lo que quiero evitar es tener que escribir la combinación.
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

Combinaciones vectores

Publicado por Camilo (1 intervención) el 21/02/2014 16:17:22
Lo mismo que omar, si quiero combinar 30 posibles valores, osea necesito 2^30 vectores, no haré 30 ciclos for..
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