home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / plot / polar_int.m < prev    next >
Text File  |  1996-09-28  |  3KB  |  125 lines

  1. # Copyright (C) 1993, 1994, 1995 John W. Eaton
  2. # This file is part of Octave.
  3. # Octave is free software; you can redistribute it and/or modify it
  4. # under the terms of the GNU General Public License as published by the
  5. # Free Software Foundation; either version 2, or (at your option) any
  6. # later version.
  7. # Octave is distributed in the hope that it will be useful, but WITHOUT
  8. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  9. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  10. # for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with Octave; see the file COPYING.  If not, write to the Free
  13. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  14.  
  15. function polar_int (theta, rho, fmt)
  16.  
  17.   if (nargin == 1)
  18.     [nr, nc] = size (theta);
  19.     if (nr == 1)
  20.       theta = theta';
  21.       tmp = nr;
  22.       nr = nc;
  23.       nc = tmp;
  24.     endif
  25.     theta_i = imag (theta);
  26.     if (any (theta_i))
  27.       rho = theta_i;
  28.       theta = real (theta);
  29.     else
  30.       rho = theta;
  31.       theta = (1:nr)';
  32.     endif
  33.   endif
  34.  
  35.   if (nargin <= 2)
  36.     if (any (imag (theta)))
  37.       theta = real (theta);
  38.     endif
  39.     if (any (imag (rho)))
  40.       rho = real (rho);
  41.     endif
  42.     if (is_scalar (theta))
  43.       if (is_scalar (rho))
  44.         x = rho * cos (theta);
  45.         y = rho * sin (theta);
  46.         plot_2_s_s (x, y, fmt);
  47.       endif
  48.     elseif (is_vector (theta))
  49.       if (is_vector (rho))
  50.         if (length (theta) != length (rho))
  51.           error ("polar: vector lengths must match");
  52.         endif
  53.         if (rows (rho) == 1)
  54.           rho = rho';
  55.         endif
  56.         if (rows (theta) == 1)
  57.           theta = theta';
  58.         endif
  59.         x = rho .* cos (theta);
  60.         y = rho .* sin (theta);
  61.         plot_2_v_v (x, y, fmt);
  62.       elseif (is_matrix (rho))
  63.         [t_nr, t_nc] = size (theta);
  64.         if (t_nr == 1)
  65.           theta = theta';
  66.           tmp = t_nr;
  67.           t_nr = t_nc;
  68.           t_nc = tmp;
  69.         endif
  70.         [r_nr, r_nc] = size (rho);
  71.         if (t_nr != r_nr)
  72.           rho = rho'
  73.           tmp = r_nr;
  74.           r_nr = r_nc;
  75.           r_nc = tmp;
  76.         endif
  77.         if (t_nr != r_nr)
  78.           error ("polar: vector and matrix sizes must match");
  79.         endif
  80.         x = diag (cos (theta)) * rho;
  81.         y = diag (sin (theta)) * rho;
  82.         plot_2_v_m (x, y, fmt);
  83.       endif
  84.     elseif (is_matrix (theta))
  85.       if (is_vector (rho))
  86.         [r_nr, r_nc] = size (rho);
  87.         if (r_nr == 1)
  88.           rho = rho';
  89.           tmp = r_nr;
  90.           r_nr = r_nc;
  91.           r_nc = tmp;
  92.         endif
  93.         [t_nr, t_nc] = size (theta);
  94.         if (r_nr != t_nr)
  95.           theta = rho'
  96.           tmp = t_nr;
  97.           t_nr = t_nc;
  98.           t_nc = tmp;
  99.         endif
  100.         if (r_nr != t_nr)
  101.           error ("polar: vector and matrix sizes must match");
  102.         endif
  103.         diag_r = diag (r);
  104.         x = diag_r * cos (theta);
  105.         y = diag_r * sin (theta);
  106.         plot_2_m_v (x, y, fmt);
  107.       elseif (is_matrix (rho))
  108.         if (size (rho) != size (theta))
  109.           error ("polar: matrix dimensions must match");
  110.         endif
  111.         x = rho .* cos (theta);
  112.         y = rho .* sin (theta);
  113.         plot_2_m_m (x, y, fmt);
  114.       endif
  115.     endif
  116.   else
  117.     usage ("polar_int (x [, y])");
  118.   endif
  119.  
  120. endfunction
  121.