diff scripts/polynomial/unmkpp.m @ 5824:448f9982e7fb

[project @ 2006-05-19 06:53:31 by jwe]
author jwe
date Fri, 19 May 2006 06:53:31 +0000
parents
children 34f96dd5441b
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/scripts/polynomial/unmkpp.m
@@ -0,0 +1,61 @@
+## Copyright (C) 2000 Paul Kienzle
+##
+## This file is part of Octave.
+##
+## Octave 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, or (at your option)
+## any later version.
+##
+## Octave 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 Octave; see the file COPYING.  If not, write to the Free
+## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {[@var{x}, @var{p}, @var{n}, @var{k}, @var{d}] =} unmkpp (@var{pp})
+##
+## Extract the components of a piece-wise polynomial structure @var{pp}.
+## These are as follows:
+##
+## @table @asis
+## @item @var{x}
+## Samples points.
+## @item @var{p}
+## Polynomial coefficients for points in sample interval. @code{@var{p}
+## (@var{i}, :)} contains the coefficients for the polynomial over
+## interval @var{i} ordered from highest to lowest. If @code{@var{d} >
+## 1}, @code{@var{p} (@var{r}, @var{i}, :)} contains the coeffients for 
+## the r-th polynomial defined on interval @var{i}. However, this is 
+## stored as a 2-D array such that @code{@var{c} = reshape (@var{p} (:,
+## @var{j}), @var{n}, @var{d})} gives @code{@var{c} (@var{i},  @var{r})}
+## is the j-th coefficient of the r-th polynomial over the i-th interval.
+## @item @var{n}
+## Number of polynomial pieces.
+## @item @var{k}
+## Order of the polynomial plus 1.
+## @item @var{d}
+## Number of polynomials defined for each interval.
+## @end table
+##
+## @seealso{mkpp, ppval, spline}
+## @end deftypefn
+
+function [x, P, n, k, d] = unmkpp (pp)
+  if (nargin == 0)
+    usage ("[x, P, n, k, d] = unmkpp(pp)")
+  endif
+  if (! isstruct (pp))
+    error ("unmkpp: expecting piecewise polynomial structure");
+  endif
+  x = pp.x;
+  P = pp.P;
+  n = pp.n;
+  k = pp.k;
+  d = pp.d;
+endfunction