49 for (
int i = 0; i < v.
length(); i++) {
50 for (
int j = 0;j < norepeats;j++)
51 temp(i*norepeats + j) = v(i);
62 for (
int j = 0; j < m.
cols(); j++) {
63 for (
int i = 0;i < norepeats;i++) {
74 it_assert_debug(usf >= 1,
"upsample: upsampling factor must be equal or greater than one");
77 for (
int i = 0;i < v.
length();i++)
95 it_assert_debug(usf >= 1,
"upsample: upsampling factor must be equal or greater than one");
98 for (
int j = 0;j < v.
cols();j++)
115 it_assert_debug(usf >= 1,
"lininterp: upsampling factor must be equal or greater than one");
116 int L = (m.
cols() - 1) * usf + 1;
118 for (
int i = 0; i < m.
rows(); i++) {
119 for (
int j = 0; j < L - 1; j++)
120 u(i, j) = (m(i, j / usf) + (j % usf) / ((
double)usf) * (m(i, (j + usf) / usf) - m(i, j / usf)));
121 u(i, L - 1) = m(i, m.
cols() - 1);
137 int nrof_samples,
double t_start = 0)
139 double t_base = 1 / f_base;
140 double t_ups = 1 / f_ups;
143 it_assert_debug(f_ups > f_base,
"lininterp(): upsampled frequency must be greater than base frequency");
144 it_assert_debug((t_start >= 0) && (t_start < cols * t_base),
"lininterp(): incorrect start time offset");
145 it_assert_debug((nrof_samples * t_ups + t_start) <= (cols * t_base),
"lininterp(): too many samples required or input data to short");
146 Mat<T> u(rows, nrof_samples);
147 double curr_time = t_start;
151 while (i < cols - 1) {
152 while ((curr_time < (i + 1) * t_base) && (k < nrof_samples)) {
153 for (
int j = 0; j < rows; j++) {
154 u(j, k) = (m(j, i) * ((i + 1) * t_base - curr_time)
155 - m(j, i + 1) * (i * t_base - curr_time)) / t_base;
178 it_assert_debug(usf >= 1,
"lininterp(): upsampling factor must be equal or greater than one");
179 int L = (v.
length() - 1) * usf + 1;
181 for (
int j = 0; j < L - 1; j++) {
182 u(j) = (v(j / usf) + (j % usf) / ((
double)usf) * (v((j + usf) / usf) - v(j / usf)));
184 u(L - 1) = v(v.
length() - 1);
208 int nrof_samples,
double t_start = 0)
210 double t_base = 1 / f_base;
211 double t_ups = 1 / f_ups;
213 it_assert_debug(f_ups > f_base,
"lininterp(): upsampled frequency must be greater than base frequency");
214 it_assert_debug((t_start >= 0) && (t_start < len * t_base),
"lininterp(): incorrect start time offset");
215 it_assert_debug((nrof_samples * t_ups + t_start) <= (len * t_base),
"lininterp(): too many samples required or input data to short");
217 double curr_time = t_start;
221 while (i < len - 1) {
222 while ((curr_time < (i + 1) * t_base) && (k < nrof_samples)) {
223 u(k) = (v(i) * ((i + 1) * t_base - curr_time)
224 - v(i + 1) * (i * t_base - curr_time)) / t_base;
244 extern template vec
repeat(
const vec &v,
int norepeats);
246 extern template cvec
repeat(
const cvec &v,
int norepeats);
248 extern template svec
repeat(
const svec &v,
int norepeats);
250 extern template ivec
repeat(
const ivec &v,
int norepeats);
252 extern template bvec
repeat(
const bvec &v,
int norepeats);
255 extern template mat
repeat(
const mat &m,
int norepeats);
257 extern template cmat
repeat(
const cmat &m,
int norepeats);
259 extern template smat
repeat(
const smat &m,
int norepeats);
261 extern template imat
repeat(
const imat &m,
int norepeats);
266 extern template vec
upsample(
const vec &v,
int usf);
268 extern template cvec
upsample(
const cvec &v,
int usf);
270 extern template svec
upsample(
const svec &v,
int usf);
272 extern template ivec
upsample(
const ivec &v,
int usf);
274 extern template bvec
upsample(
const bvec &v,
int usf);
277 extern template mat
upsample(
const mat &v,
int usf);
279 extern template cmat
upsample(
const cmat &v,
int usf);
281 extern template smat
upsample(
const smat &v,
int usf);
283 extern template imat
upsample(
const imat &v,
int usf);
288 extern template void upsample(
const vec &v,
int usf, vec &u);
290 extern template void upsample(
const cvec &v,
int usf, cvec &u);
292 extern template void upsample(
const svec &v,
int usf, svec &u);
294 extern template void upsample(
const ivec &v,
int usf, ivec &u);
296 extern template void upsample(
const bvec &v,
int usf, bvec &u);
299 extern template void upsample(
const mat &v,
int usf, mat &u);
301 extern template void upsample(
const cmat &v,
int usf, cmat &u);
303 extern template void upsample(
const smat &v,
int usf, smat &u);
305 extern template void upsample(
const imat &v,
int usf, imat &u);
310 extern template vec
lininterp(
const vec &v,
int usf);
312 extern template cvec
lininterp(
const cvec &v,
int usf);
315 extern template mat
lininterp(
const mat &v,
int usf);
317 extern template cmat
lininterp(
const cmat &v,
int usf);
320 extern template void lininterp(
const vec &v,
int usf, vec &u);
322 extern template void lininterp(
const cvec &v,
int usf, cvec &u);
325 extern template void lininterp(
const mat &v,
int usf, mat &u);
327 extern template void lininterp(
const cmat &v,
int usf, cmat &u);
330 extern template mat
lininterp(
const mat &m,
double f_base,
double f_ups,
int nrof_samples,
double t_start);
332 extern template cmat
lininterp(
const cmat &m,
double f_base,
double f_ups,
int nrof_samples,
double t_start);
335 extern template vec
lininterp(
const vec &v,
double f_base,
double f_ups,
int nrof_samples,
double t_start);
337 extern template cvec
lininterp(
const cvec &v,
double f_base,
double f_ups,
int nrof_samples,
double t_start);
343 #endif // #ifndef RESAMPLING_H