annotate doc/interpreter/splineimages.m @ 21226:a55b8ece1ecd

reorganize octave_config_info again * build-env-features.sh: Don't include ENABLE_ items in the output. * toplev.cc (find_config_info): New static function. (Foctave_config_info): Put Octave configuration info in the main struct. Put the build system features and build environment info in substructures. Allow searching of all elements by keyword. * __have_feature__.m, doc/interpreter/testfun.txi: Fix name of build features substructure element. * geometryimages.m, interpimages.m, plotimages.m, sparseimages.m, splineimages.m: Use __have_feature__ to check for OSMESA.
author John W. Eaton <jwe@octave.org>
date Mon, 08 Feb 2016 23:14:56 -0500
parents e5f78891ad9e
children ecce63c99c3f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19697
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 19593
diff changeset
1 ## Copyright (C) 2012-2015 Ben Abbott, Jonas Lundgren
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
2 ##
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
3 ## This file is part of Octave.
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
4 ##
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
8 ## your option) any later version.
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
9 ##
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
13 ## General Public License for more details.
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
14 ##
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
18
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
19 function splineimages (d, nm, typ)
20335
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
20 set_graphics_toolkit ();
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
21 set_print_size ();
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
22 hide_output ();
20316
d8992a16643c doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents: 20307
diff changeset
23 outfile = fullfile (d, [nm "." typ]);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
24 if (strcmp (typ, "png"))
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
25 set (0, "defaulttextfontname", "*");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
26 endif
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
27 if (strcmp (typ, "eps"))
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
28 d_typ = "-depsc2";
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
29 else
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 14526
diff changeset
30 d_typ = ["-d" typ];
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
31 endif
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
32
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
33 if (strcmp (typ, "txt"))
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
34 image_as_txt (d, nm);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
35 elseif (strcmp (nm, "splinefit1")) ## Breaks and Pieces
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
36 x = 2 * pi * rand (1, 200);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
37 y = sin (x) + sin (2 * x) + 0.2 * randn (size (x));
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
38 ## Uniform breaks
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
39 breaks = linspace (0, 2 * pi, 41); ## 41 breaks, 40 pieces
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
40 pp1 = splinefit (x, y, breaks);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
41 ## Breaks interpolated from data
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
42 pp2 = splinefit (x, y, 10); ## 11 breaks, 10 pieces
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
43 ## Plot
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
44 xx = linspace (0, 2 * pi, 400);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
45 y1 = ppval (pp1, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
46 y2 = ppval (pp2, xx);
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
47 plot (x, y, ".", xx, [y1; y2]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
48 axis tight;
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
49 ylim ([-2.5 2.5]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
50 legend ("data", "41 breaks, 40 pieces", "11 breaks, 10 pieces");
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
51 print (outfile, d_typ);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
52 elseif (strcmp (nm, "splinefit2")) ## Spline orders
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
53 ## Data (200 points)
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
54 x = 2 * pi * rand (1, 200);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
55 y = sin (x) + sin (2 * x) + 0.1 * randn (size (x));
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
56 ## Splines
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
57 pp1 = splinefit (x, y, 8, "order", 0); ## Piecewise constant
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
58 pp2 = splinefit (x, y, 8, "order", 1); ## Piecewise linear
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
59 pp3 = splinefit (x, y, 8, "order", 2); ## Piecewise quadratic
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
60 pp4 = splinefit (x, y, 8, "order", 3); ## Piecewise cubic
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
61 pp5 = splinefit (x, y, 8, "order", 4); ## Etc.
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
62 ## Plot
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
63 xx = linspace (0, 2 * pi, 400);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
64 y1 = ppval (pp1, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
65 y2 = ppval (pp2, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
66 y3 = ppval (pp3, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
67 y4 = ppval (pp4, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
68 y5 = ppval (pp5, xx);
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
69 plot (x, y, ".", xx, [y1; y2; y3; y4; y5]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
70 axis tight;
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
71 ylim ([-2.5 2.5]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
72 legend ({"data", "order 0", "order 1", "order 2", "order 3", "order 4"});
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
73 print (outfile, d_typ);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
74 elseif (strcmp (nm, "splinefit3"))
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
75 ## Data (100 points)
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
76 x = 2 * pi * [0, (rand (1, 98)), 1];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
77 y = sin (x) - cos (2 * x) + 0.2 * randn (size (x));
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
78 ## No constraints
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
79 pp1 = splinefit (x, y, 10, "order", 5);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
80 ## Periodic boundaries
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
81 pp2 = splinefit (x, y, 10, "order", 5, "periodic", true);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
82 ## Plot
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
83 xx = linspace (0, 2 * pi, 400);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
84 y1 = ppval (pp1, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
85 y2 = ppval (pp2, xx);
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
86 plot (x, y, ".", xx, [y1; y2]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
87 axis tight;
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
88 ylim ([-2 3]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
89 legend ({"data", "no constraints", "periodic"});
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
90 print (outfile, d_typ);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
91 elseif (strcmp (nm, "splinefit4"))
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
92 ## Data (200 points)
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
93 x = 2 * pi * rand (1, 200);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
94 y = sin (2 * x) + 0.1 * randn (size (x));
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
95 ## Breaks
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
96 breaks = linspace (0, 2 * pi, 10);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
97 ## Clamped endpoints, y = y" = 0
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
98 xc = [0, 0, 2*pi, 2*pi];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
99 cc = [(eye (2)), (eye (2))];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
100 con = struct ("xc", xc, "cc", cc);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
101 pp1 = splinefit (x, y, breaks, "constraints", con);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
102 ## Hinged periodic endpoints, y = 0
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
103 con = struct ("xc", 0);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
104 pp2 = splinefit (x, y, breaks, "constraints", con, "periodic", true);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
105 ## Plot
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
106 xx = linspace (0, 2 * pi, 400);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
107 y1 = ppval (pp1, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
108 y2 = ppval (pp2, xx);
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
109 plot (x, y, ".", xx, [y1; y2]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
110 axis tight;
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
111 ylim ([-1.5 1.5]);
20316
d8992a16643c doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents: 20307
diff changeset
112 legend ({"data", "clamped", "hinged periodic"});
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
113 print (outfile, d_typ);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
114 elseif (strcmp (nm, "splinefit5"))
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
115 ## Truncated data
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
116 x = [0, 1, 2, 4, 8, 16, 24, 40, 56, 72, 80] / 80;
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
117 y = [0, 28, 39, 53, 70, 86, 90, 79, 55, 22, 2] / 1000;
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
118 xy = [x; y];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
119 ## Curve length parameter
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
120 ds = sqrt (diff (x).^2 + diff (y).^2);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
121 s = [0, cumsum(ds)];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
122 ## Constraints at s = 0: (x,y) = (0,0), (dx/ds,dy/ds) = (0,1)
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
123 con = struct ("xc", [0 0], "yc", [0 0; 0 1], "cc", eye (2));
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
124 ## Fit a spline with 4 pieces
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
125 pp = splinefit (s, xy, 4, "constraints", con);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
126 ## Plot
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
127 ss = linspace (0, s(end), 400);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
128 xyfit = ppval (pp, ss);
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
129 xyb = ppval (pp, pp.breaks);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
130 plot (x, y, ".", xyfit(1,:), xyfit(2,:), "r", xyb(1,:), xyb(2,:), "ro");
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
131 legend ({"data", "spline", "breaks"});
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
132 axis tight;
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
133 ylim ([0 0.1]);
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
134 print (outfile, d_typ);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
135 elseif (strcmp (nm, "splinefit6"))
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
136 ## Data
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
137 x = linspace (0, 2*pi, 200);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
138 y = sin (x) + sin (2 * x) + 0.05 * randn (size (x));
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
139 ## Add outliers
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
140 x = [x, linspace(0,2*pi,60)];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
141 y = [y, -ones(1,60)];
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
142 ## Fit splines with hinged conditions
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
143 con = struct ("xc", [0, 2*pi]);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
144 pp1 = splinefit (x, y, 8, "constraints", con, "beta", 0.25); ## Robust fitting
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
145 pp2 = splinefit (x, y, 8, "constraints", con, "beta", 0.75); ## Robust fitting
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
146 pp3 = splinefit (x, y, 8, "constraints", con); ## No robust fitting
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
147 ## Plot
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
148 xx = linspace (0, 2*pi, 400);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
149 y1 = ppval (pp1, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
150 y2 = ppval (pp2, xx);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
151 y3 = ppval (pp3, xx);
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
152 plot (x, y, ".", xx, [y1; y2; y3]);
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
153 legend ({"data with outliers","robust, beta = 0.25", ...
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
154 "robust, beta = 0.75", "no robust fitting"});
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
155 axis tight;
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
156 ylim ([-2 2]);
20307
c3c1fb44f9b5 eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents: 19717
diff changeset
157 print (outfile, d_typ);
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
158 endif
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 17744
diff changeset
159 hide_output ();
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
160 endfunction
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
161
20335
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
162 ## This function no longer sets the graphics toolkit; That is now done
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
163 ## automatically by C++ code which will ordinarily choose 'qt', but might
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
164 ## choose gnuplot on older systems. Only a complete lack of plotting is a
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
165 ## problem.
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
166 function set_graphics_toolkit ()
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
167 if (isempty (available_graphics_toolkits ()))
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
168 error ("no graphics toolkit available for plotting");
21226
a55b8ece1ecd reorganize octave_config_info again
John W. Eaton <jwe@octave.org>
parents: 20885
diff changeset
169 elseif (! strcmp ("gnuplot", graphics_toolkit ())
a55b8ece1ecd reorganize octave_config_info again
John W. Eaton <jwe@octave.org>
parents: 20885
diff changeset
170 && ! __have_feature__ ("OSMESA"))
20885
e5f78891ad9e Allow doc's images to be generated using gnuplot when osmesa isn't available.
Ben Abbott <bpabbott@mac.com>
parents: 20335
diff changeset
171 if (! any (strcmp ("gnuplot", available_graphics_toolkits ())))
e5f78891ad9e Allow doc's images to be generated using gnuplot when osmesa isn't available.
Ben Abbott <bpabbott@mac.com>
parents: 20335
diff changeset
172 error ("no graphics toolkit available for offscreen plotting");
e5f78891ad9e Allow doc's images to be generated using gnuplot when osmesa isn't available.
Ben Abbott <bpabbott@mac.com>
parents: 20335
diff changeset
173 else
e5f78891ad9e Allow doc's images to be generated using gnuplot when osmesa isn't available.
Ben Abbott <bpabbott@mac.com>
parents: 20335
diff changeset
174 graphics_toolkit ("gnuplot");
e5f78891ad9e Allow doc's images to be generated using gnuplot when osmesa isn't available.
Ben Abbott <bpabbott@mac.com>
parents: 20335
diff changeset
175 endif
20335
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
176 endif
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
177 endfunction
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
178
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
179 function set_print_size ()
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
180 image_size = [5.0, 3.5]; # in inches, 16:9 format
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
181 border = 0; # For postscript use 50/72
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
182 set (0, "defaultfigurepapertype", "<custom>");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
183 set (0, "defaultfigurepaperorientation", "landscape");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
184 set (0, "defaultfigurepapersize", image_size + 2*border);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
185 set (0, "defaultfigurepaperposition", [border, border, image_size]);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
186 endfunction
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
187
20335
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
188 ## Use this function before plotting commands and after every call to print
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
189 ## since print() resets output to stdout (unfortunately, gnuplot can't pop
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
190 ## output as it can the terminal type).
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
191 function hide_output ()
20335
b439ccc9a162 doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents: 20316
diff changeset
192 hf = figure (1, "visible", "off");
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
193 endfunction
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
194
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
195 ## generate something for the texinfo @image command to process
20316
d8992a16643c doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents: 20307
diff changeset
196 function image_as_txt (d, nm)
d8992a16643c doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents: 20307
diff changeset
197 fid = fopen (fullfile (d, [nm ".txt"]), "wt");
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
198 fputs (fid, "\n");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
199 fputs (fid, "+---------------------------------+\n");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
200 fputs (fid, "| Image unavailable in text mode. |\n");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
201 fputs (fid, "+---------------------------------+\n");
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
202 fclose (fid);
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
203 endfunction
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
204
17504
8b692d9ea54e Use Octave coding conventions for m-files which generate images for manual.
Rik <rik@octave.org>
parents: 16994
diff changeset
205
14509
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
206 %!demo
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
207 %! for s = 1:6
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
208 %! splineimages (sprintf ("splinefit##d", s), "pdf")
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
209 %! endfor
a88f8e4fae56 New Function, splinefit.m
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
210