2011-06-05 6 views
8

Je me demandais s'il y avait un moyen facile dans MATLAB de faire l'opération suivante: Je voudrais copier une ligne ou une colonne d'une matrice et insérez-le dans la rangée/colonne suivante.Copiez une ligne ou une colonne d'une matrice et insérez-la dans la ligne/colonne suivante

Par exemple: étant donné une matrice 3x3

1 2 3 
4 5 6 
7 8 9 

Je voudrais copier la première ligne et l'insérer comme une deuxième rangée:

1 2 3 
1 2 3 
4 5 6 
7 8 9 

Quelqu'un peut-il conseiller comment je pourrais y arriver dans MATLAB? Merci!

+0

heureusement, c'est matlab dont nous parlons, et matlab peut tout faire :-) –

Répondre

16

Vous pouvez simplement répéter les indices des lignes que vous souhaitez répéter

A = A([1 1 2 3],:) 
0
A = [A(1,:); A]; 
+0

Pas assez général. L'exemple donné par l'OP utilisait la première rangée, mais sa question ne l'était pas. trutheality a la seule méthode générale qui fonctionnera pour n'importe quelle rangée de sélection et d'insertion. –

3

Pour insérer le numéro de ligne source comme numéro de ligne target:

A = [A(1:target-1,:); A(source,:); A(target:end,:)]; 
0

Je sais c'est un sujet très ancien, mais ce post était à venir dans les recherches que j'ai faites pour le même problème quand je cherchais comme Fonction Matlab spécifique Je ne me souviens pas du nom de - padarray.

Ainsi, vous pouvez faire:

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

A = padarray (A, [1 0], 'répliquer', 'pré');

Ceci est souvent utile si, par exemple, A est la sortie d'une fonction que vous n'avez pas enregistrée explicitement, vous ne savez donc pas quelle est la première ligne. Quoi qu'il en soit, j'espère que cela aidera quelqu'un!

Questions connexes