aubio
0.4.9
Toggle main menu visibility
Loading...
Searching...
No Matches
fvec.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2003-2015 Paul Brossier <piem@aubio.org>
3
4
This file is part of aubio.
5
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.
10
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.
15
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/>.
18
19
*/
20
21
#ifndef AUBIO_FVEC_H
22
#define AUBIO_FVEC_H
23
24
#ifdef __cplusplus
25
extern
"C"
{
26
#endif
27
28
/** \file
29
30
Vector of real-valued data
31
32
This file specifies the ::fvec_t buffer type, which is used throughout aubio
33
to store vector of real-valued ::smpl_t.
34
35
\example test-fvec.c
36
37
*/
38
39
/** Buffer for real data
40
41
Vector of real-valued data
42
43
::fvec_t is is the structure used to store vector of real-valued data, ::smpl_t .
44
45
\code
46
47
uint_t buffer_size = 1024;
48
49
// create a vector of 512 values
50
fvec_t * input = new_fvec (buffer_size);
51
52
// set some values of the vector
53
input->data[23] = 2.;
54
// ..
55
56
// compute the mean of the vector
57
mean = fvec_mean(a_vector);
58
59
// destroy the vector
60
del_fvec(a_vector);
61
62
\endcode
63
64
See `examples/` and `tests/src` directories for more examples.
65
66
*/
67
typedef
struct
{
68
uint_t
length
;
/**< length of buffer */
69
smpl_t
*
data
;
/**< data vector of length ::fvec_t.length */
70
}
fvec_t
;
71
72
/** fvec_t buffer creation function
73
74
\param length the length of the buffer to create
75
76
*/
77
fvec_t
*
new_fvec
(
uint_t
length);
78
79
/** fvec_t buffer deletion function
80
81
\param s buffer to delete as returned by new_fvec()
82
83
*/
84
void
del_fvec
(
fvec_t
*s);
85
86
/** read sample value in a buffer
87
88
\param s vector to read from
89
\param position sample position to read from
90
91
*/
92
smpl_t
fvec_get_sample
(
const
fvec_t
*s,
uint_t
position);
93
94
/** write sample value in a buffer
95
96
\param s vector to write to
97
\param data value to write in s->data[position]
98
\param position sample position to write to
99
100
*/
101
void
fvec_set_sample
(
fvec_t
*s,
smpl_t
data,
uint_t
position);
102
103
/** read data from a buffer
104
105
\param s vector to read from
106
107
*/
108
smpl_t
*
fvec_get_data
(
const
fvec_t
*s);
109
110
/** print out fvec data
111
112
\param s vector to print out
113
114
*/
115
void
fvec_print
(
const
fvec_t
*s);
116
117
/** set all elements to a given value
118
119
\param s vector to modify
120
\param val value to set elements to
121
122
*/
123
void
fvec_set_all
(
fvec_t
*s,
smpl_t
val);
124
125
/** set all elements to zero
126
127
\param s vector to modify
128
129
*/
130
void
fvec_zeros
(
fvec_t
*s);
131
132
/** set all elements to ones
133
134
\param s vector to modify
135
136
*/
137
void
fvec_ones
(
fvec_t
*s);
138
139
/** revert order of vector elements
140
141
\param s vector to revert
142
143
*/
144
void
fvec_rev
(
fvec_t
*s);
145
146
/** apply weight to vector
147
148
If the weight vector is longer than s, only the first elements are used. If
149
the weight vector is shorter than s, the last elements of s are not weighted.
150
151
\param s vector to weight
152
\param weight weighting coefficients
153
154
*/
155
void
fvec_weight
(
fvec_t
*s,
const
fvec_t
*weight);
156
157
/** make a copy of a vector
158
159
\param s source vector
160
\param t vector to copy to
161
162
*/
163
void
fvec_copy
(
const
fvec_t
*s,
fvec_t
*t);
164
165
/** make a copy of a vector, applying weights to each element
166
167
\param in input vector
168
\param weight weights vector
169
\param out output vector
170
171
*/
172
void
fvec_weighted_copy
(
const
fvec_t
*in,
const
fvec_t
*weight,
fvec_t
*out);
173
174
#ifdef __cplusplus
175
}
176
#endif
177
178
#endif
/* AUBIO_FVEC_H */
fvec_copy
void fvec_copy(const fvec_t *s, fvec_t *t)
make a copy of a vector
fvec_get_data
smpl_t * fvec_get_data(const fvec_t *s)
read data from a buffer
fvec_set_sample
void fvec_set_sample(fvec_t *s, smpl_t data, uint_t position)
write sample value in a buffer
fvec_rev
void fvec_rev(fvec_t *s)
revert order of vector elements
new_fvec
fvec_t * new_fvec(uint_t length)
fvec_t buffer creation function
del_fvec
void del_fvec(fvec_t *s)
fvec_t buffer deletion function
fvec_weight
void fvec_weight(fvec_t *s, const fvec_t *weight)
apply weight to vector
fvec_weighted_copy
void fvec_weighted_copy(const fvec_t *in, const fvec_t *weight, fvec_t *out)
make a copy of a vector, applying weights to each element
fvec_zeros
void fvec_zeros(fvec_t *s)
set all elements to zero
fvec_print
void fvec_print(const fvec_t *s)
print out fvec data
fvec_set_all
void fvec_set_all(fvec_t *s, smpl_t val)
set all elements to a given value
fvec_ones
void fvec_ones(fvec_t *s)
set all elements to ones
fvec_get_sample
smpl_t fvec_get_sample(const fvec_t *s, uint_t position)
read sample value in a buffer
fvec_t
Buffer for real data.
Definition
fvec.h:67
fvec_t::data
smpl_t * data
data vector of length fvec_t.length
Definition
fvec.h:69
fvec_t::length
uint_t length
length of buffer
Definition
fvec.h:68
uint_t
unsigned int uint_t
unsigned integer
Definition
types.h:60
smpl_t
float smpl_t
short sample format (32 or 64 bits)
Definition
types.h:41
Generated by
1.17.0