Loading [MathJax]/extensions/TeX/AMSsymbols.js
LAL 7.7.0.1-5e288d3
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
TimeSeries.h
Go to the documentation of this file.
1/*
2 *
3 * Copyright (C) 2007 Kipp Cannon
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
13 * Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19
20
21#ifndef _TIMESERIES_H
22#define _TIMESERIES_H
23
24
25#include <stddef.h>
26#include <lal/LALDatatypes.h>
27
28#if defined(__cplusplus)
29extern "C" {
30#elif 0
31} /* so that editors will match preceding brace */
32#endif
33
34/**
35 * \defgroup TimeSeriesManipulation Time Series Manipulation
36 * \ingroup lal_tools
37 * \author Kipp Cannon <kipp@gravity.phys.uwm.edu>
38 *
39 * \brief This is a suite of functions for creating, destroying, and manipulating LAL
40 * time series. One pair of functions (the XLAL version and its LAL
41 * counterpart) is available for each method and series type. For example
42 * <tt>XLALCreateREAL4TimeSeries()</tt> is available for creating time series
43 * of \c REAL4 data, and the LAL-stype wrapper
44 * <tt>LALCreateREAL4TimeSeries()</tt> is provided which is equivalent to the
45 * XLAL version in all respects except that it adheres to the LAL calling
46 * conventions (eg.\ it takes a \c LALStatus pointer as its first
47 * argument, its return type is \c void, etc.).
48 *
49 */
50/** @{ */
51
52/**
53 * \name Creation Functions
54 *
55 * ### Synopsis ###
56 *
57 * \code
58 * #include <lal/TimeSeries.h>
59 *
60 * XLALCreate<timeseriestype>()
61 * LALCreate<timeseriestype>()
62 * \endcode
63 *
64 * ### Description ###
65 *
66 * These functions create LAL frequency series. An XLAL function returns a
67 * pointer to the newly created series or \c NULL on failure. The LAL
68 * counterpart accepts the address of a pointer which it fills with the
69 * address of the newly created series or \c NULL on failure.
70 * Additionally, the LAL wrapper provides standard LAL-style error checking
71 * via a \c LALStatus pointer.
72 */
73/** @{ */
74COMPLEX8TimeSeries *XLALCreateCOMPLEX8TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
75COMPLEX16TimeSeries *XLALCreateCOMPLEX16TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
76REAL4TimeSeries *XLALCreateREAL4TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
77REAL8TimeSeries *XLALCreateREAL8TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
78INT2TimeSeries *XLALCreateINT2TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
79INT4TimeSeries *XLALCreateINT4TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
80INT8TimeSeries *XLALCreateINT8TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
81UINT2TimeSeries *XLALCreateUINT2TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
82UINT4TimeSeries *XLALCreateUINT4TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
83UINT8TimeSeries *XLALCreateUINT8TimeSeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length );
84/** @} */
85
86/**
87 * \name Destruction Functions
88 *
89 * ### Synopsis ###
90 *
91 * \code
92 * #include <lal/TimeSeries.h>
93 *
94 * XLALDestroy<timeseriestype>()
95 * LALDestroy<timeseriestype>()
96 * \endcode
97 *
98 * ### Description ###
99 *
100 * These functions free all memory associated with a LAL time series. It is
101 * safe to pass \c NULL to these functions.
102 *
103 */
104/** @{ */
115/** @} */
116
117
118/**
119 * \name Conversion Functions
120 *
121 * ### Synopsis ###
122 *
123 * \code
124 * #include <lal/TimeSeries.h>
125 *
126 * XLALConvertREAL8TimeSeriesToREAL4()
127 * XLALConvertREAL4TimeSeriesToREAL8()
128 * \endcode
129 *
130 * ### Description ###
131 *
132 * These functions create a new REAL8 or REAL4 time series, initialized
133 * from a REAL4 or REAL8 time series, respectively. The source time series
134 * is not deallocated.
135 */
136/** @{ */
139/** @} */
140
141
142/**
143 * \name Cutting Functions
144 *
145 * ### Synopsis ###
146 *
147 * \code
148 * #include <lal/TimeSeries.h>
149 *
150 * XLALCut<timeseriestype>()
151 * LALCut<timeseriestype>()
152 * \endcode
153 *
154 * ### Description ###
155 *
156 * These functions create a new time series by extracting a section of an
157 * existing time series.
158 */
159/** @{ */
160COMPLEX8TimeSeries *XLALCutCOMPLEX8TimeSeries ( const COMPLEX8TimeSeries *series, size_t first, size_t length );
161COMPLEX16TimeSeries *XLALCutCOMPLEX16TimeSeries ( const COMPLEX16TimeSeries *series, size_t first, size_t length );
162REAL4TimeSeries *XLALCutREAL4TimeSeries ( const REAL4TimeSeries *series, size_t first, size_t length );
163REAL8TimeSeries *XLALCutREAL8TimeSeries ( const REAL8TimeSeries *series, size_t first, size_t length );
164INT2TimeSeries *XLALCutINT2TimeSeries ( const INT2TimeSeries *series, size_t first, size_t length );
165INT4TimeSeries *XLALCutINT4TimeSeries ( const INT4TimeSeries *series, size_t first, size_t length );
166INT8TimeSeries *XLALCutINT8TimeSeries ( const INT8TimeSeries *series, size_t first, size_t length );
167UINT2TimeSeries *XLALCutUINT2TimeSeries ( const UINT2TimeSeries *series, size_t first, size_t length );
168UINT4TimeSeries *XLALCutUINT4TimeSeries ( const UINT4TimeSeries *series, size_t first, size_t length );
169UINT8TimeSeries *XLALCutUINT8TimeSeries ( const UINT8TimeSeries *series, size_t first, size_t length );
170/** @} */
171
172/**
173 * \name Resizing Functions
174 *
175 * ### Synopsis ###
176 *
177 * \code
178 * #include <lal/TimeSeries.h>
179 *
180 * XLALResize<timeseriestype>()
181 * LALResize<timeseriestype>()
182 * XLALShrink<timeseriestype>()
183 * LALShrink<timeseriestype>()
184 * \endcode
185 *
186 * ### Description ###
187 *
188 * These functions resize an existing time series. The new time series will
189 * have the given length, and its contents will consist of that part of the
190 * original time series that started at sample first. If first is negative,
191 * then the new time series is padded at the start by that many samples. The
192 * time series' epoch is adjusted appropriately.
193 */
194/** @{ */
197REAL4TimeSeries *XLALResizeREAL4TimeSeries ( REAL4TimeSeries *series, int first, size_t length );
198REAL8TimeSeries *XLALResizeREAL8TimeSeries ( REAL8TimeSeries *series, int first, size_t length );
199INT2TimeSeries *XLALResizeINT2TimeSeries ( INT2TimeSeries *series, int first, size_t length );
200INT4TimeSeries *XLALResizeINT4TimeSeries ( INT4TimeSeries *series, int first, size_t length );
201INT8TimeSeries *XLALResizeINT8TimeSeries ( INT8TimeSeries *series, int first, size_t length );
202UINT2TimeSeries *XLALResizeUINT2TimeSeries ( UINT2TimeSeries *series, int first, size_t length );
203UINT4TimeSeries *XLALResizeUINT4TimeSeries ( UINT4TimeSeries *series, int first, size_t length );
204UINT8TimeSeries *XLALResizeUINT8TimeSeries ( UINT8TimeSeries *series, int first, size_t length );
205
208REAL4TimeSeries *XLALShrinkREAL4TimeSeries ( REAL4TimeSeries *series, size_t first, size_t length );
209REAL8TimeSeries *XLALShrinkREAL8TimeSeries ( REAL8TimeSeries *series, size_t first, size_t length );
210INT2TimeSeries *XLALShrinkINT2TimeSeries ( INT2TimeSeries *series, size_t first, size_t length );
211INT4TimeSeries *XLALShrinkINT4TimeSeries ( INT4TimeSeries *series, size_t first, size_t length );
212INT8TimeSeries *XLALShrinkINT8TimeSeries ( INT8TimeSeries *series, size_t first, size_t length );
213UINT2TimeSeries *XLALShrinkUINT2TimeSeries ( UINT2TimeSeries *series, size_t first, size_t length );
214UINT4TimeSeries *XLALShrinkUINT4TimeSeries ( UINT4TimeSeries *series, size_t first, size_t length );
215UINT8TimeSeries *XLALShrinkUINT8TimeSeries ( UINT8TimeSeries *series, size_t first, size_t length );
216/** @} */
217
218/**
219 * \name Addition Functions
220 *
221 * ### Synopsis ###
222 *
223 * \code
224 * #include <lal/TimeSeries.h>
225 *
226 * XLALAdd<timeseriestype>()
227 * \endcode
228 *
229 * ### Description ###
230 *
231 * These functions add the second argument to the first argument, returning a
232 * pointer to the first argument on success or NULL on failure. The two
233 * series must have the same heterodyne frequency and time resolution, and
234 * have units that differ only by a dimensionless factor.
235 *
236 */
237/** @{ */
248/** @} */
249
250/** @} */
251
252#if 0
253{ /* so that editors will match succeeding brace */
254#elif defined(__cplusplus)
255}
256#endif
257
258#endif /* _TIMESERIES_H */
const char *const name
type name
Definition: UserInput.c:193
double REAL8
Double precision real floating-point number (8 bytes).
char CHAR
One-byte signed integer, see Headers LAL(Atomic)Datatypes.h for more details.
REAL4TimeSeries * XLALCreateREAL4TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
UINT2TimeSeries * XLALShrinkUINT2TimeSeries(UINT2TimeSeries *series, size_t first, size_t length)
INT8TimeSeries * XLALCreateINT8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
INT4TimeSeries * XLALShrinkINT4TimeSeries(INT4TimeSeries *series, size_t first, size_t length)
UINT8TimeSeries * XLALShrinkUINT8TimeSeries(UINT8TimeSeries *series, size_t first, size_t length)
UINT4TimeSeries * XLALCreateUINT4TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
void XLALDestroyUINT4TimeSeries(UINT4TimeSeries *series)
UINT4TimeSeries * XLALAddUINT4TimeSeries(UINT4TimeSeries *arg1, const UINT4TimeSeries *arg2)
UINT4TimeSeries * XLALShrinkUINT4TimeSeries(UINT4TimeSeries *series, size_t first, size_t length)
REAL4TimeSeries * XLALAddREAL4TimeSeries(REAL4TimeSeries *arg1, const REAL4TimeSeries *arg2)
REAL8TimeSeries * XLALConvertREAL4TimeSeriesToREAL8(const REAL4TimeSeries *series)
Definition: TimeSeries.c:50
REAL8TimeSeries * XLALShrinkREAL8TimeSeries(REAL8TimeSeries *series, size_t first, size_t length)
void XLALDestroyCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series)
void XLALDestroyINT8TimeSeries(INT8TimeSeries *series)
UINT4TimeSeries * XLALResizeUINT4TimeSeries(UINT4TimeSeries *series, int first, size_t length)
INT4TimeSeries * XLALCutINT4TimeSeries(const INT4TimeSeries *series, size_t first, size_t length)
COMPLEX16TimeSeries * XLALCreateCOMPLEX16TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
REAL4TimeSeries * XLALConvertREAL8TimeSeriesToREAL4(const REAL8TimeSeries *series)
Definition: TimeSeries.c:33
void XLALDestroyINT4TimeSeries(INT4TimeSeries *series)
REAL8TimeSeries * XLALResizeREAL8TimeSeries(REAL8TimeSeries *series, int first, size_t length)
INT2TimeSeries * XLALAddINT2TimeSeries(INT2TimeSeries *arg1, const INT2TimeSeries *arg2)
INT8TimeSeries * XLALShrinkINT8TimeSeries(INT8TimeSeries *series, size_t first, size_t length)
INT2TimeSeries * XLALShrinkINT2TimeSeries(INT2TimeSeries *series, size_t first, size_t length)
void XLALDestroyUINT8TimeSeries(UINT8TimeSeries *series)
INT8TimeSeries * XLALCutINT8TimeSeries(const INT8TimeSeries *series, size_t first, size_t length)
UINT8TimeSeries * XLALAddUINT8TimeSeries(UINT8TimeSeries *arg1, const UINT8TimeSeries *arg2)
COMPLEX8TimeSeries * XLALShrinkCOMPLEX8TimeSeries(COMPLEX8TimeSeries *series, size_t first, size_t length)
COMPLEX8TimeSeries * XLALCreateCOMPLEX8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
UINT8TimeSeries * XLALCutUINT8TimeSeries(const UINT8TimeSeries *series, size_t first, size_t length)
COMPLEX16TimeSeries * XLALCutCOMPLEX16TimeSeries(const COMPLEX16TimeSeries *series, size_t first, size_t length)
REAL8TimeSeries * XLALAddREAL8TimeSeries(REAL8TimeSeries *arg1, const REAL8TimeSeries *arg2)
INT2TimeSeries * XLALCutINT2TimeSeries(const INT2TimeSeries *series, size_t first, size_t length)
void XLALDestroyCOMPLEX8TimeSeries(COMPLEX8TimeSeries *series)
COMPLEX16TimeSeries * XLALShrinkCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series, size_t first, size_t length)
void XLALDestroyREAL4TimeSeries(REAL4TimeSeries *series)
REAL8TimeSeries * XLALCutREAL8TimeSeries(const REAL8TimeSeries *series, size_t first, size_t length)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
INT4TimeSeries * XLALResizeINT4TimeSeries(INT4TimeSeries *series, int first, size_t length)
void XLALDestroyUINT2TimeSeries(UINT2TimeSeries *series)
UINT2TimeSeries * XLALResizeUINT2TimeSeries(UINT2TimeSeries *series, int first, size_t length)
UINT2TimeSeries * XLALCreateUINT2TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
UINT8TimeSeries * XLALResizeUINT8TimeSeries(UINT8TimeSeries *series, int first, size_t length)
COMPLEX8TimeSeries * XLALCutCOMPLEX8TimeSeries(const COMPLEX8TimeSeries *series, size_t first, size_t length)
COMPLEX8TimeSeries * XLALAddCOMPLEX8TimeSeries(COMPLEX8TimeSeries *arg1, const COMPLEX8TimeSeries *arg2)
INT2TimeSeries * XLALCreateINT2TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
REAL4TimeSeries * XLALCutREAL4TimeSeries(const REAL4TimeSeries *series, size_t first, size_t length)
INT4TimeSeries * XLALCreateINT4TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
INT8TimeSeries * XLALAddINT8TimeSeries(INT8TimeSeries *arg1, const INT8TimeSeries *arg2)
COMPLEX16TimeSeries * XLALResizeCOMPLEX16TimeSeries(COMPLEX16TimeSeries *series, int first, size_t length)
UINT8TimeSeries * XLALCreateUINT8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
COMPLEX16TimeSeries * XLALAddCOMPLEX16TimeSeries(COMPLEX16TimeSeries *arg1, const COMPLEX16TimeSeries *arg2)
REAL4TimeSeries * XLALResizeREAL4TimeSeries(REAL4TimeSeries *series, int first, size_t length)
UINT2TimeSeries * XLALAddUINT2TimeSeries(UINT2TimeSeries *arg1, const UINT2TimeSeries *arg2)
UINT2TimeSeries * XLALCutUINT2TimeSeries(const UINT2TimeSeries *series, size_t first, size_t length)
UINT4TimeSeries * XLALCutUINT4TimeSeries(const UINT4TimeSeries *series, size_t first, size_t length)
REAL4TimeSeries * XLALShrinkREAL4TimeSeries(REAL4TimeSeries *series, size_t first, size_t length)
INT8TimeSeries * XLALResizeINT8TimeSeries(INT8TimeSeries *series, int first, size_t length)
COMPLEX8TimeSeries * XLALResizeCOMPLEX8TimeSeries(COMPLEX8TimeSeries *series, int first, size_t length)
void XLALDestroyINT2TimeSeries(INT2TimeSeries *series)
INT2TimeSeries * XLALResizeINT2TimeSeries(INT2TimeSeries *series, int first, size_t length)
INT4TimeSeries * XLALAddINT4TimeSeries(INT4TimeSeries *arg1, const INT4TimeSeries *arg2)
Time series of COMPLEX16 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:600
Time series of COMPLEX8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:590
Time series of INT2 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:511
Time series of INT4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:530
Time series of INT8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:550
This structure stores units in the mksA system (plus Kelvin, Strain, and ADC Count).
Definition: LALDatatypes.h:498
Epoch relative to GPS epoch, see LIGOTimeGPS type for more details.
Definition: LALDatatypes.h:458
Time series of REAL4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:570
Time series of REAL8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:580
Time series of UINT2 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:521
Time series of UINT4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:540
Time series of UINT8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:560
enum @1 epoch