2 Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org>
4 This file is part of aubio.
6 aubio is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 aubio is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with aubio. If not, see <http://www.gnu.org/licenses/>.
21 #ifndef _AUBIO__FVEC_H
22 #define _AUBIO__FVEC_H
30 Vector of real-valued data
32 This file specifies the ::fvec_t buffer type, which is used throughout aubio
33 to store vector of real-valued ::smpl_t.
39 /** Buffer for real data
41 Vector of real-valued data
43 ::fvec_t is is the structure used to store vector of real-valued data, ::smpl_t .
47 uint_t buffer_size = 1024;
49 // create a vector of 512 values
50 fvec_t * input = new_fvec (buffer_size);
52 // set some values of the vector
56 // compute the mean of the vector
57 mean = fvec_mean(a_vector);
64 See `examples/` and `tests/src` directories for more examples.
68 uint_t length; /**< length of buffer */
69 smpl_t *data; /**< data vector of length ::fvec_t.length */
72 /** fvec_t buffer creation function
74 \param length the length of the buffer to create
77 fvec_t * new_fvec(uint_t length);
79 /** fvec_t buffer deletion function
81 \param s buffer to delete as returned by new_fvec()
84 void del_fvec(fvec_t *s);
86 /** read sample value in a buffer
88 Note that this function is not used in the aubio library, since the same
89 result can be obtained using vec->data[position]. Its purpose is to
90 access these values from wrappers, as created by swig.
92 \param s vector to read from
93 \param position sample position to read from
96 smpl_t fvec_get_sample(fvec_t *s, uint_t position);
98 /** write sample value in a buffer
100 Note that this function is not used in the aubio library, since the same
101 result can be obtained by assigning vec->data[position]. Its purpose
102 is to access these values from wrappers, as created by swig.
104 \param s vector to write to
105 \param data value to write in s->data[position]
106 \param position sample position to write to
109 void fvec_set_sample(fvec_t *s, smpl_t data, uint_t position);
111 /** read data from a buffer
113 Note that this function is not used in the aubio library, since the same
114 result can be obtained with vec->data. Its purpose is to access these values
115 from wrappers, as created by swig.
117 \param s vector to read from
120 smpl_t * fvec_get_data(fvec_t *s);
122 /** print out fvec data
124 \param s vector to print out
127 void fvec_print(fvec_t *s);
129 /** set all elements to a given value
131 \param s vector to modify
132 \param val value to set elements to
135 void fvec_set_all (fvec_t *s, smpl_t val);
137 /** set all elements to zero
139 \param s vector to modify
142 void fvec_zeros(fvec_t *s);
144 /** set all elements to ones
146 \param s vector to modify
149 void fvec_ones(fvec_t *s);
151 /** revert order of vector elements
153 \param s vector to revert
156 void fvec_rev(fvec_t *s);
158 /** apply weight to vector
160 If the weight vector is longer than s, only the first elements are used. If
161 the weight vector is shorter than s, the last elements of s are not weighted.
163 \param s vector to weight
164 \param weight weighting coefficients
167 void fvec_weight(fvec_t *s, fvec_t *weight);
169 /** make a copy of a vector
171 \param s source vector
172 \param t vector to copy to
175 void fvec_copy(fvec_t *s, fvec_t *t);
181 #endif /* _AUBIO__FVEC_H */