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