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