Mercurial > hg > octave-lyh
diff scripts/sparse/gplot.m @ 5576:7e008607a86e
[project @ 2005-12-13 19:05:54 by jwe]
author | jwe |
---|---|
date | Tue, 13 Dec 2005 19:05:55 +0000 |
parents | |
children | 6ada1581e8b4 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/sparse/gplot.m @@ -0,0 +1,54 @@ +## Copyright (C) 2005 Ivana Varekova +## +## 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} {} gplot (@var{a}, @var{xy}) +## @deftypefnx {Function File} {} gplot (@var{a}, @var{xy}, @var{LineSpec}) +## @deftypefnx {Function File} {[@var{x}, @var{y}] =} gplot (@var{a}, @var{xy}) +## Plots a graph defined by @var{A} and @var{xy} in the graph theory sense. +## @var{A} is the adjacency matrix of the array to be plotted and @var{xy} is a +## @var{n}-by-2 matrix containing the coordinates of the nodes of the graph. +## +## If defined, @var{LineStyle} defines the output style for the plot. Called +## with no output arguments the graph is plotted directly. Called with output +## arguments the coordinates of the plot are returned in @var{x} and @var{y}, +## rather than being plotted. +## @end deftypefn +## @seealso{treeplot,etreeplot,spy} + +function [x, y] = gplot (A, xy, LineStyle) + + if (nargin < 2 || nargin > 3 || nargout > 2) + error ("gplot: wrong number of input/output arguments"); + endif + + if (nargin == 2) + LineStyle = "1;;"; + endif + + [i,j] = find(A); + xcoord = [xy(i,1), xy(j,1), NaN * ones(length(i),1)]'(:); + ycoord = [xy(i,2), xy(j,2), NaN * ones(length(i),1)]'(:); + + if (nargout == 0) + plot(xcoord,ycoord,LineStyle); + else + x = xcoord; + y = ycoord; + endif + +endfunction