1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 The GSL Team.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Free Software
Needs Free Documentation", the Front-Cover text being "A GNU Manual",
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled "GNU Free Documentation
License".
(a) The Back-Cover Text is: "You have the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library – Reference Manual: Histogram allocation</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: Histogram allocation">
<meta name="keywords" content="GNU Scientific Library – Reference Manual: Histogram allocation">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Histograms.html#Histograms" rel="up" title="Histograms">
<link href="Copying-Histograms.html#Copying-Histograms" rel="next" title="Copying Histograms">
<link href="The-histogram-struct.html#The-histogram-struct" rel="previous" title="The histogram struct">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Histogram-allocation"></a>
<div class="header">
<p>
Next: <a href="Copying-Histograms.html#Copying-Histograms" accesskey="n" rel="next">Copying Histograms</a>, Previous: <a href="The-histogram-struct.html#The-histogram-struct" accesskey="p" rel="previous">The histogram struct</a>, Up: <a href="Histograms.html#Histograms" accesskey="u" rel="up">Histograms</a> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Histogram-allocation-1"></a>
<h3 class="section">23.2 Histogram allocation</h3>
<p>The functions for allocating memory to a histogram follow the style of
<code>malloc</code> and <code>free</code>. In addition they also perform their own
error checking. If there is insufficient memory available to allocate a
histogram then the functions call the error handler (with an error
number of <code>GSL_ENOMEM</code>) in addition to returning a null pointer.
Thus if you use the library error handler to abort your program then it
isn’t necessary to check every histogram <code>alloc</code>.
</p>
<dl>
<dt><a name="index-gsl_005fhistogram_005falloc"></a>Function: <em>gsl_histogram *</em> <strong>gsl_histogram_alloc</strong> <em>(size_t <var>n</var>)</em></dt>
<dd><p>This function allocates memory for a histogram with <var>n</var> bins, and
returns a pointer to a newly created <code>gsl_histogram</code> struct. If
insufficient memory is available a null pointer is returned and the
error handler is invoked with an error code of <code>GSL_ENOMEM</code>. The
bins and ranges are not initialized, and should be prepared using one of
the range-setting functions below in order to make the histogram ready
for use.
</p></dd></dl>
<dl>
<dt><a name="index-gsl_005fhistogram_005fset_005franges"></a>Function: <em>int</em> <strong>gsl_histogram_set_ranges</strong> <em>(gsl_histogram * <var>h</var>, const double <var>range</var>[], size_t <var>size</var>)</em></dt>
<dd><p>This function sets the ranges of the existing histogram <var>h</var> using
the array <var>range</var> of size <var>size</var>. The values of the histogram
bins are reset to zero. The <code>range</code> array should contain the
desired bin limits. The ranges can be arbitrary, subject to the
restriction that they are monotonically increasing.
</p>
<p>The following example shows how to create a histogram with logarithmic
bins with ranges [1,10), [10,100) and [100,1000).
</p>
<div class="example">
<pre class="example">gsl_histogram * h = gsl_histogram_alloc (3);
/* bin[0] covers the range 1 <= x < 10 */
/* bin[1] covers the range 10 <= x < 100 */
/* bin[2] covers the range 100 <= x < 1000 */
double range[4] = { 1.0, 10.0, 100.0, 1000.0 };
gsl_histogram_set_ranges (h, range, 4);
</pre></div>
<p>Note that the size of the <var>range</var> array should be defined to be one
element bigger than the number of bins. The additional element is
required for the upper value of the final bin.
</p></dd></dl>
<dl>
<dt><a name="index-gsl_005fhistogram_005fset_005franges_005funiform"></a>Function: <em>int</em> <strong>gsl_histogram_set_ranges_uniform</strong> <em>(gsl_histogram * <var>h</var>, double <var>xmin</var>, double <var>xmax</var>)</em></dt>
<dd><p>This function sets the ranges of the existing histogram <var>h</var> to cover
the range <var>xmin</var> to <var>xmax</var> uniformly. The values of the
histogram bins are reset to zero. The bin ranges are shown in the table
below,
</p><div class="display">
<pre class="display">bin[0] corresponds to xmin <= x < xmin + d
bin[1] corresponds to xmin + d <= x < xmin + 2 d
......
bin[n-1] corresponds to xmin + (n-1)d <= x < xmax
</pre></div>
<p>where <em>d</em> is the bin spacing, <em>d = (xmax-xmin)/n</em>.
</p></dd></dl>
<dl>
<dt><a name="index-gsl_005fhistogram_005ffree"></a>Function: <em>void</em> <strong>gsl_histogram_free</strong> <em>(gsl_histogram * <var>h</var>)</em></dt>
<dd><p>This function frees the histogram <var>h</var> and all of the memory
associated with it.
</p></dd></dl>
<hr>
<div class="header">
<p>
Next: <a href="Copying-Histograms.html#Copying-Histograms" accesskey="n" rel="next">Copying Histograms</a>, Previous: <a href="The-histogram-struct.html#The-histogram-struct" accesskey="p" rel="previous">The histogram struct</a>, Up: <a href="Histograms.html#Histograms" accesskey="u" rel="up">Histograms</a> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|