Mercurial > hg > smallbox
diff Problems/private/spdiag.m @ 61:42fcbcfca132
(none)
author | idamnjanovic |
---|---|
date | Tue, 15 Mar 2011 12:21:31 +0000 |
parents | 207a6ae9a76f |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Problems/private/spdiag.m Tue Mar 15 12:21:31 2011 +0000 @@ -0,0 +1,38 @@ +function Y = spdiag(V,K) +%SPDIAG Sparse diagonal matrices. +% SPDIAG(V,K) when V is a vector with N components is a sparse square +% matrix of order N+ABS(K) with the elements of V on the K-th diagonal. +% K = 0 is the main diagonal, K > 0 is above the main diagonal and K < 0 +% is below the main diagonal. +% +% SPDIAG(V) is the same as SPDIAG(V,0) and puts V on the main diagonal. +% +% See also DIAG, SPDIAGS. + + +% Ron Rubinstein +% Computer Science Department +% Technion, Haifa 32000 Israel +% ronrubin@cs +% +% June 2008 + + +if (nargin<2) + K = 0; +end + +n = length(V) + abs(K); + +if (K>0) + i = 1:length(V); + j = K+1:n; +elseif (K<0) + i = -K+1:n; + j = 1:length(V); +else + i = 1:n; + j = 1:n; +end + +Y = sparse(i,j,V(:),n,n); \ No newline at end of file