2010-11-29 6 views
4

J'ai deux vecteurs matlab. Le premier a N éléments, l'autre a k*N. Je sais ce qu'est k, et je veux épisser les listes de sorte que chaque élément du premier vecteur apparaisse avant les éléments k correspondants du vecteur suivant. Par exemple:Vecteurs de matlab d'épissage

k = 3 
x = [1 5 9] 
y = [2 3 4 6 7 8 10 11 12] 

doivent être combinés pour ressembler à ceci:

z = [1 2 3 4 5 6 7 8 9 10 11 12] 

est-il un moyen facile de le faire rapidement? Mes x et y sont assez gros. Merci!

Répondre

7

Vous pouvez le faire via une remodelant

k = 3 
x = [1 5 9] 
y = [2 3 4 6 7 8 10 11 12] 

%# make a k-by-n array 
z = reshape(y,k,[]); 

%# catenate with x 
z = [x;z]; 

%# reorder 
z = z(:)' 
+0

+1. Solution intelligente. –