2011-04-06 9 views
2

J'ai une matrice simple: [3 5 9 10]. Comment puis-je le transformer en: [3 0 ; 5 3 ; 9 5 ; 10 9]Matrice manipulation dans MATLAB

J'ai essayé d'utiliser hankel etc. mais cela n'a pas fonctionné. Cela doit être une opération vectorielle (pas de boucle for/while). Merci!

Répondre

4

Vous étiez proche. Vous voulez utiliser la fonction TOEPLITZ à la place:

>> vec = [3 5 9 10]; 
>> toeplitz(vec,[vec(1) 0]) 

ans = 

    3  0 
    5  3 
    9  5 
    10  9 

Cependant, puisque vous avez seulement 2 colonnes de votre matrice, cela est beaucoup plus simple:

[vec; 0 vec(1:end-1)].' 
+0

merci Kenneth (encore!) – Maddy

1
a = 1:4; 

b = repmat(a',1,2); 
b(:,2) = b(:,2)-1; 
+0

Merci eykanal! Mais mon Q n'était pas clair .. ta réponse était correcte pour mon initiale Q. – Maddy