diag extraction de diagonale ou construction d'une matrice avec un vecteur en diagonal

## Séquence d'appel

               y = diag(vm)
               y = diag(vm, k)

## Paramètres

vm

  vecteur ou matrice (stockage plein ou creux)

k

  entier (valeur par défaut 0)

y

  vecteur ou matrice

## Description

Pour `vm` un n-vecteur (ligne ou colonne) `diag(vm)` renvoie une matrice diagonale avec les composantes de `vm` sur la diagonale principale.

`diag(vm,k)` est une matrice `(n+abs(k))x(n+abs(k))` avec les composantes de `vm` sur la kième diagonale. `k=0` correspond à la diagonale principale `k>0` correspond aux diagonales supérieures et `k<0` aux diagonales inférieures.

Pour une matrice `vm`, `diag(vm,k)` est le vecteur colonne dont les composantes sont les termes de la kième diagonale de `vm`. `diag(vm)` est la diagonale principale de `vm`. `diag(diag(x))` est une matrice diagonale.

Si `vm` est une matrice creuse `diag(vm,k)` renvoie une matrice creuse.

Pour construire un système linéaire diagonal, utilisez `blockdiag`.

Notez que `eye(A).*A` renvoie une matrice diagonale avec les termes diagonaux de `A`. Ceci est valide pour tout type de matrice (constante, polynomiale, rationnelle, système dynamique linéaire, ...).

## Exemples

    diag([1,2])

    A=[1,2;3,4];
    diag(A)  // diagonale principale
    diag(A,1)

    diag(sparse(1:10))  // matrice diagonale creuse

    // Construction d'une matrice tridiagonale de taille 2*m+1
    m=5;diag(-m:m) +  diag(ones(2*m,1),1) +diag(ones(2*m,1),-1)

## Voir aussi

- toeplitz
- eye
- blockdiag
- spec
- bdiag