idamnjanovic@1: function id = diag_ids(x,k) idamnjanovic@1: %DIAG_IDS Indices of matrix diagonal elements. idamnjanovic@1: % ID = DIAG_IDS(X) returns the indices of the main diagonal of X. idamnjanovic@1: % idamnjanovic@1: % ID = DIAG_IDS(X,K) returns the indices of the K-th diagonal. K=0 idamnjanovic@1: % represents the main diagonal, positive values are above the main idamnjanovic@1: % diagonal and negative values are below the main diagonal. 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: % September 2006 idamnjanovic@1: idamnjanovic@1: idamnjanovic@1: if (nargin==1), k=0; end idamnjanovic@1: idamnjanovic@1: [m,n] = size(x); idamnjanovic@1: l = max(m,n); idamnjanovic@1: idamnjanovic@1: if (k<=0) idamnjanovic@1: id = (0:l-1)*m + (1:l) - k; idamnjanovic@1: else idamnjanovic@1: id = (0:l-1)*m + (1:l) + k*m; idamnjanovic@1: end idamnjanovic@1: idamnjanovic@1: if (l-k>m), id = id(1:end-(l-k-m)); end idamnjanovic@1: if (l+k>n), id = id(1:end-(l+k-n)); end