Mercurial > hg > octave-nkf
view scripts/sparse/speye.m @ 5967:d542d9197839 ss-2-9-8
[project @ 2006-08-24 21:24:53 by jwe]
author | jwe |
---|---|
date | Thu, 24 Aug 2006 21:27:41 +0000 |
parents | 4c8a2e4e0717 |
children | 2c85044aa63f |
line wrap: on
line source
## Copyright (C) 2004 David Bateman & Andy Adler ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ## 02110-1301 USA ## -*- texinfo -*- ## @deftypefn {Function File} {@var{y} =} speye (@var{m}) ## @deftypefnx {Function File} {@var{y} =} speye (@var{m}, @var{n}) ## @deftypefnx {Function File} {@var{y} =} speye (@var{sz}) ## Returns a sparse identity matrix. This is significantly more ## efficient than @code{sparse (eye (@var{m}))} as the full matrix ## is not constructed. ## ## Called with a single argument a square matrix of size @var{m} by ## @var{m} is created. Otherwise a matrix of @var{m} by @var{n} is ## created. If called with a single vector argument, this argument ## is taken to be the size of the matrix to create. ## @end deftypefn function s = speye(m,n) if (nargin == 1) if (isvector (m) && length(m) == 2) n = m(2); m = m(1); elseif (isscalar (m)) n = m; else error ("speye: invalid matrix dimension"); endif else if (!isscalar (m) || !isscalar (n)) error ("speye: invalid matrix dimension"); endif endif lo = min([m,n]); s = sparse(1:lo,1:lo,1,m,n); endfunction %!assert(issparse(speye(4))) %!assert(speye(4),sparse(1:4,1:4,1)) %!assert(speye(2,4),sparse(1:2,1:2,1,2,4)) %!assert(speye(4,2),sparse(1:2,1:2,1,4,2)) %!assert(speye([4,2]),sparse(1:2,1:2,1,4,2))