qm-dsp 1.8
BeatSpectrum.cpp
Go to the documentation of this file.
1/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3/*
4 QM DSP Library
5
6 Centre for Digital Music, Queen Mary, University of London.
7 This file copyright 2008 Kurt Jacobson and QMUL.
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version. See the file
13 COPYING included with this distribution for more information.
14*/
15
16#include "BeatSpectrum.h"
17
19
20using std::vector;
21
22vector<double> BeatSpectrum::process(const vector<vector<double> > &m)
23{
24 int origin = 0;
25 int sz = m.size()/2;
26
27 int i, j, k;
28
29 vector<double> v(sz);
30 for (i = 0; i < sz; ++i) v[i] = 0.0;
31
33
34 for (i = origin; i < origin + sz; ++i) {
35
36 k = 0;
37
38 for (j = i + 1; j < i + sz + 1; ++j) {
39
40 v[k++] += cd.distance(m[i], m[j]);
41 }
42 }
43
44 // normalize
45
46 double max = 0.0;
47
48 for (i = 0; i < sz; ++i) {
49 if (v[i] > max) max = v[i];
50 }
51
52 if (max > 0.0) {
53 for (i = 0; i < sz; ++i) {
54 v[i] /= max;
55 }
56 }
57
58 return v;
59}
60
std::vector< double > process(const std::vector< std::vector< double > > &inmatrix)
double distance(const vector< double > &v1, const vector< double > &v2)