idamnjanovic@1: function Y = spdiag(V,K) idamnjanovic@1: %SPDIAG Sparse diagonal matrices. idamnjanovic@1: % SPDIAG(V,K) when V is a vector with N components is a sparse square idamnjanovic@1: % matrix of order N+ABS(K) with the elements of V on the K-th diagonal. idamnjanovic@1: % K = 0 is the main diagonal, K > 0 is above the main diagonal and K < 0 idamnjanovic@1: % is below the main diagonal. idamnjanovic@1: % idamnjanovic@1: % SPDIAG(V) is the same as SPDIAG(V,0) and puts V on the main diagonal. idamnjanovic@1: % idamnjanovic@1: % See also DIAG, SPDIAGS. idamnjanovic@1: idamnjanovic@1: idamnjanovic@1: % Ron Rubinstein idamnjanovic@1: % Computer Science Department idamnjanovic@1: % Technion, Haifa 32000 Israel idamnjanovic@1: % ronrubin@cs idamnjanovic@1: % idamnjanovic@1: % June 2008 idamnjanovic@1: idamnjanovic@1: idamnjanovic@1: if (nargin<2) idamnjanovic@1: K = 0; idamnjanovic@1: end idamnjanovic@1: idamnjanovic@1: n = length(V) + abs(K); idamnjanovic@1: idamnjanovic@1: if (K>0) idamnjanovic@1: i = 1:length(V); idamnjanovic@1: j = K+1:n; idamnjanovic@1: elseif (K<0) idamnjanovic@1: i = -K+1:n; idamnjanovic@1: j = 1:length(V); idamnjanovic@1: else idamnjanovic@1: i = 1:n; idamnjanovic@1: j = 1:n; idamnjanovic@1: end idamnjanovic@1: idamnjanovic@1: Y = sparse(i,j,V(:),n,n);