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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/sparse/gplot.m	Tue Dec 13 19:05:55 2005 +0000
@@ -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