Mercurial > octave
annotate scripts/polynomial/pchip.m @ 27984:b09432b20a84
maint: Remove special cases of old version control keywords in code base.
* common_size.m, cumtrapz.m, interp1.m, polyarea.m, trapz.m, inpolygon.m,
summer.m, javamem.m, duplication_matrix.m, subspace.m, starting_stepsize.m,
text.m, errorbar.m, loglogerr.m, peaks.m, __errplot__.m, semilogxerr.m,
semilogyerr.m, stemleaf.m, streamtube.m, __pltopt__.m, printd.m, pchip.m,
arch_fit.m, arch_rnd.m, arch_test.m, arma_rnd.m, autoreg_matrix.m, bartlett.m,
blackman.m, diffpara.m, durbinlevinson.m, fractdiff.m, hamming.m, hanning.m,
hurst.m, ifftshift.m, periodogram.m, rectangle_lw.m, rectangle_sw.m,
triangle_lw.m, triangle_sw.m, sinetone.m, sinewave.m, spectral_adf.m,
spectral_xdf.m, spencer.m, stft.m, synthesis.m, yulewalker.m, bicg.m,
bicgstab.m, cgs.m, gmres.m, pcr.m, sprand.m, tfqmr.m, betaincinv.m, betaln.m,
gammaincinv.m, hadamard.m, center.m, cov.m, discrete_inv.m, discrete_pdf.m,
discrete_rnd.m, empirical_cdf.m, empirical_inv.m, empirical_pdf.m,
empirical_rnd.m, iqr.m, kendall.m, mean.m, meansq.m, moment.m, prctile.m,
quantile.m, range.m, run_count.m, spearman.m, statistics.m, var.m, zscore.m,
datenum.m, datevec.m:
Remove special cases of old version control keywords in code base.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 21 Jan 2020 14:04:31 -0800 |
parents | bd51beb6205e |
children | 28de41192f3c 0a5b15007766 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
27919
1891570abac8
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27918
diff
changeset
|
3 ## Copyright (C) 2001-2020 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
5837 | 7 ## |
6440 | 8 ## This file is part of Octave. |
5837 | 9 ## |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
6440 | 11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
13 ## (at your option) any later version. |
6440 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
18 ## GNU General Public License for more details. |
5837 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
7016 | 21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
5837 | 25 |
26 ## -*- texinfo -*- | |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20231
diff
changeset
|
27 ## @deftypefn {} {@var{pp} =} pchip (@var{x}, @var{y}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20231
diff
changeset
|
28 ## @deftypefnx {} {@var{yi} =} pchip (@var{x}, @var{y}, @var{xi}) |
14104
614505385171
doc: Overhaul docstrings for polynomial functions.
Rik <octave@nomad.inbox5.com>
parents:
12608
diff
changeset
|
29 ## Return the Piecewise Cubic Hermite Interpolating Polynomial (pchip) of |
614505385171
doc: Overhaul docstrings for polynomial functions.
Rik <octave@nomad.inbox5.com>
parents:
12608
diff
changeset
|
30 ## points @var{x} and @var{y}. |
5837 | 31 ## |
14104
614505385171
doc: Overhaul docstrings for polynomial functions.
Rik <octave@nomad.inbox5.com>
parents:
12608
diff
changeset
|
32 ## If called with two arguments, return the piecewise polynomial @var{pp} |
614505385171
doc: Overhaul docstrings for polynomial functions.
Rik <octave@nomad.inbox5.com>
parents:
12608
diff
changeset
|
33 ## that may be used with @code{ppval} to evaluate the polynomial at specific |
20165
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
34 ## points. |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
35 ## |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
36 ## When called with a third input argument, @code{pchip} evaluates the pchip |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
37 ## polynomial at the points @var{xi}. The third calling form is equivalent to |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
38 ## @code{ppval (pchip (@var{x}, @var{y}), @var{xi})}. |
5837 | 39 ## |
20165
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
40 ## The variable @var{x} must be a strictly monotonic vector (either increasing |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
41 ## or decreasing) of length @var{n}. |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
42 ## |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
43 ## @var{y} can be either a vector or array. If @var{y} is a vector then it |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
44 ## must be the same length @var{n} as @var{x}. If @var{y} is an array then |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
45 ## the size of @var{y} must have the form |
5837 | 46 ## @tex |
47 ## $$[s_1, s_2, \cdots, s_k, n]$$ | |
48 ## @end tex | |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7650
diff
changeset
|
49 ## @ifnottex |
5837 | 50 ## @code{[@var{s1}, @var{s2}, @dots{}, @var{sk}, @var{n}]} |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7650
diff
changeset
|
51 ## @end ifnottex |
20165
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
52 ## The array is reshaped internally to a matrix where the leading dimension is |
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
53 ## given by |
5837 | 54 ## @tex |
55 ## $$s_1 s_2 \cdots s_k$$ | |
56 ## @end tex | |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7650
diff
changeset
|
57 ## @ifnottex |
5837 | 58 ## @code{@var{s1} * @var{s2} * @dots{} * @var{sk}} |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7650
diff
changeset
|
59 ## @end ifnottex |
20165
f1d0f506ee78
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
60 ## and each row of this matrix is then treated separately. Note that this is |
21546
f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
61 ## exactly opposite to @code{interp1} but is done for @sc{matlab} |
f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
62 ## compatibility. |
5837 | 63 ## |
64 ## @seealso{spline, ppval, mkpp, unmkpp} | |
65 ## @end deftypefn | |
66 | |
27984
b09432b20a84
maint: Remove special cases of old version control keywords in code base.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
67 ## Algorithm: |
b09432b20a84
maint: Remove special cases of old version control keywords in code base.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
68 ## S_k = a_k + b_k*x + c_k*x^2 + d_k*x^3; (spline polynomial) |
5837 | 69 ## |
70 ## 4 conditions: | |
71 ## S_k(x_k) = y_k; | |
72 ## S_k(x_k+1) = y_k+1; | |
73 ## S_k'(x_k) = y_k'; | |
74 ## S_k'(x_k+1) = y_k+1'; | |
75 | |
76 function ret = pchip (x, y, xi) | |
77 | |
78 if (nargin < 2 || nargin > 3) | |
79 print_usage (); | |
80 endif | |
81 | |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
82 ## make row vector |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
83 x = x(:).'; |
5837 | 84 n = length (x); |
85 | |
86 ## Check the size and shape of y | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
87 if (isvector (y)) |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
88 y = y(:).'; # force row vector |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
89 szy = size (y); |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14465
diff
changeset
|
90 if (! size_equal (x, y)) |
15202
f3b5cadfd6d5
fix missing semicolons in various .m files
John W. Eaton <jwe@octave.org>
parents:
14868
diff
changeset
|
91 error ("pchip: length of X and Y must match"); |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
92 endif |
5837 | 93 else |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
94 szy = size (y); |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
95 if (n != szy(end)) |
15202
f3b5cadfd6d5
fix missing semicolons in various .m files
John W. Eaton <jwe@octave.org>
parents:
14868
diff
changeset
|
96 error ("pchip: length of X and last dimension of Y must match"); |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
97 endif |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
98 y = reshape (y, [prod(szy(1:end-1)), szy(end)]); |
5837 | 99 endif |
100 | |
5838 | 101 h = diff (x); |
102 if (all (h < 0)) | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
103 x = fliplr (x); |
5838 | 104 h = diff (x); |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
105 y = fliplr (y); |
5838 | 106 elseif (any (h <= 0)) |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14465
diff
changeset
|
107 error ("pchip: X must be strictly monotonic"); |
5837 | 108 endif |
109 | |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
110 f1 = y(:, 1:n-1); |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
111 |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
112 ## Compute derivatives. |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
113 d = __pchip_deriv__ (x, y, 2); |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
114 d1 = d(:, 1:n-1); |
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
115 d2 = d(:, 2:n); |
5837 | 116 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11536
diff
changeset
|
117 ## This is taken from SLATEC. |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
118 h = diag (h); |
5837 | 119 |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
120 delta = diff (y, 1, 2) / h; |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
121 del1 = (d1 - delta) / h; |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
122 del2 = (d2 - delta) / h; |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
123 c3 = del1 + del2; |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9211
diff
changeset
|
124 c2 = -c3 - del1; |
20231
83792dd9bcc1
Use in-place operators in m-files where possible.
Rik <rik@octave.org>
parents:
20165
diff
changeset
|
125 c3 /= h; |
9768
31900e17b5f5
improve Matlab compatibility & performance of ppval/mkpp and some associated funcs
Jaroslav Hajek <highegg@gmail.com>
parents:
9754
diff
changeset
|
126 coeffs = cat (3, c3, c2, d1, f1); |
5837 | 127 |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
128 ret = mkpp (x, coeffs, szy(1:end-1)); |
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
129 |
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
130 if (nargin == 3) |
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
131 ret = ppval (ret, xi); |
5837 | 132 endif |
133 | |
134 endfunction | |
135 | |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
15202
diff
changeset
|
136 |
5837 | 137 %!demo |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11536
diff
changeset
|
138 %! x = 0:8; |
5837 | 139 %! y = [1, 1, 1, 1, 0.5, 0, 0, 0, 0]; |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11536
diff
changeset
|
140 %! xi = 0:0.01:8; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
141 %! yspline = spline (x,y,xi); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
142 %! ypchip = pchip (x,y,xi); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
143 %! title ("pchip and spline fit to discontinuous function"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
144 %! plot (xi,yspline, xi,ypchip,"-", x,y,"+"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
145 %! legend ("spline", "pchip", "data"); |
5837 | 146 %! %------------------------------------------------------------------- |
147 %! % confirm that pchip agreed better to discontinuous data than spline | |
148 | |
14364
721a4a83cba6
test: Space out %!shared variable declaration for readability
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
149 %!shared x, y, y2, pp, yi1, yi2, yi3 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11536
diff
changeset
|
150 %! x = 0:8; |
5837 | 151 %! y = [1, 1, 1, 1, 0.5, 0, 0, 0, 0]; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
152 %!assert (pchip (x,y,x), y) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
153 %!assert (pchip (x,y,x'), y') |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
154 %!assert (pchip (x',y',x'), y') |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
155 %!assert (pchip (x',y',x), y) |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14552
diff
changeset
|
156 %!assert (isempty (pchip (x',y',[]))) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14552
diff
changeset
|
157 %!assert (isempty (pchip (x,y,[]))) |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
158 %!assert (pchip (x,[y;y],x), [pchip(x,y,x);pchip(x,y,x)]) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
159 %!assert (pchip (x,[y;y],x'), [pchip(x,y,x);pchip(x,y,x)]) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
160 %!assert (pchip (x',[y;y],x), [pchip(x,y,x);pchip(x,y,x)]) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
161 %!assert (pchip (x',[y;y],x'), [pchip(x,y,x);pchip(x,y,x)]) |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
11587
diff
changeset
|
162 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14237
diff
changeset
|
163 %! x = (0:8)*pi/4; y = [sin(x); cos(x)]; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
164 %! y2(:,:,1) = y; y2(:,:,2) = y+1; y2(:,:,3) = y-1; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
165 %! pp = pchip (x, shiftdim (y2,2)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
166 %! yi1 = ppval (pp, (1:4)*pi/4); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
167 %! yi2 = ppval (pp, repmat ((1:4)*pi/4, [5,1])); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
168 %! yi3 = ppval (pp, [pi/2,pi]); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
169 %!assert (size (pp.coefs), [48,4]) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
170 %!assert (pp.pieces, 8) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
171 %!assert (pp.order, 4) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
172 %!assert (pp.dim, [3,2]) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
173 %!assert (ppval (pp,pi), [0,-1;1,0;-1,-2], 1e-14) |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14237
diff
changeset
|
174 %!assert (yi3(:,:,2), ppval (pp,pi), 1e-14) |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
175 %!assert (yi3(:,:,1), [1,0;2,1;0,-1], 1e-14) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
176 %!assert (squeeze (yi1(1,2,:)), [1/sqrt(2); 0; -1/sqrt(2);-1], 1e-14) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
177 %!assert (size (yi2), [3,2,5,4]) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
178 %!assert (squeeze (yi2(1,2,3,:)), [1/sqrt(2); 0; -1/sqrt(2);-1], 1e-14) |
14462
af552038cc52
Fix segfault in pchip when input array is too small (bug #35835).
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14138
diff
changeset
|
179 |
21581
6fab85c1538f
maint: Follow Octave conventions for use of semicolon in BIST tests.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
180 %!error (pchip (1,2)) |
6fab85c1538f
maint: Follow Octave conventions for use of semicolon in BIST tests.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
181 %!error (pchip (1,2,3)) |