# diag

включение или исключение диагонали

## Последовательность вызова

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

## Аргументы

vm

  вектор или матрица (полная или разрежённая)

k

  целое число (значение по умолчанию: 0)

y

  вектор или матрица

## Описание

Для `vm`, вектора-строки (или вектора-столбца) с `n` элементами, `diag(vm)` возвращает диагональную матрицу с элементами из `vm` вдоль главной диагонали.

`diag(vm,k)` является матрицей `(n+abs(k))x(n+abs(k))` с элементами из `vm` вдоль `k`-той диагонали. `k=0` является главной диагональю; для верхних диагоналей `k>0`; для нижних диагоналей `k<0`.

Для матрицы `vm`, `diag(vm,k)` является вектором-столбцом, составленным из элементов `k`-той диагонали в `vm`. `diag(vm)` является главной диагональю `vm`. `diag(diag(x))` является диагональной матрицей.

Если `vm` является разрежённой матрицей, то `diag(vm,k)` возвращает разряжённую матрицу.

Чтобы построить диагональную линейную систему, используйте `sysdiag`.

Заметьте, что `eye(A).*A` возвращает диагональную матрицу, построенную с диагональными элементами из `A`. Это правильно для любой матрицы (констант, полиномиальной, рациональной, линейной системы пространств-состояний, ...).

## Примеры

    diag([1,2])

    A=[1,2;3,4];
    diag(A)  // главная диагональ
    diag(A,1)

    diag(sparse(1:10))  // разряжённую диагональная матрица

    // формируем трёхдиагональную матрицу размером 2*m+1
    m=5;diag(-m:m) +  diag(ones(2*m,1),1) +diag(ones(2*m,1),-1)

## Смотрите также

- sysdiag
- sparse