diag ==== diagonal including or extracting Calling Sequence ~~~~~~~~~~~~~~~~ :: [y]=diag(vm, [k]) Arguments ~~~~~~~~~ :vm vector or matrix (full or sparse storage) : :k integer (default value 0) : :y vector or matrix : Description ~~~~~~~~~~~ for `vm` a (row or column) n-vector `diag(vm)` returns a diagonal matrix with entries of `vm` along the main diagonal. `diag(vm,k)` is a `(n+abs(k))x(n+abs(k))` matrix with the entries of `vm` along the kth diagonal. `k=0` is the main diagonal `k>0` is for upper diagonals and `k<0` for lower diagonals. For a matrix `vm`, `diag(vm,k)` is the column vector made of entries of the kth diagonal of `vm`. `diag(vm)` is the main diagonal of `vm`. `diag(diag(x))` is a diagonal matrix. If `vm` is a sparse matrix `diag(vm,k)` returns a sparse matrix. To construct a diagonal linear system, use `sysdiag`. Note that `eye(A).*A` returns a diagonal matrix made with the diagonal entries of `A`. This is valid for any matrix (constant, polynomial, rational, state-space linear system,...). Examples ~~~~~~~~ :: diag([1,2]) A=[1,2;3,4]; diag(A) // main diagonal diag(A,1) diag(`sparse`_(1:10)) // sparse diagonal matrix // form a tridiagonal matrix of size 2*m+1 m=5;diag(-m:m) + diag(`ones`_(2*m,1),1) +diag(`ones`_(2*m,1),-1) See Also ~~~~~~~~ + `sysdiag`_ block diagonal system connection + `sparse`_ sparse matrix definition .. _sparse: sparse.html .. _sysdiag: sysdiag.html