annotate maths/Correlation.cpp @ 56:a0f987c06bec

* Make it possible to retrieve beat spectral difference function from bar detector * Avoid crashes when bar detector is run with very short input
author cannam
date Fri, 27 Feb 2009 10:23:08 +0000
parents 2e3f5d2d62c1
children e5907ae6de17
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 /*
cannam@0 4 QM DSP Library
cannam@0 5
cannam@0 6 Centre for Digital Music, Queen Mary, University of London.
cannam@0 7 This file copyright 2005-2006 Christian Landone.
cannam@0 8 All rights reserved.
cannam@0 9 */
cannam@0 10
cannam@0 11 #include "Correlation.h"
cannam@0 12
cannam@0 13 //////////////////////////////////////////////////////////////////////
cannam@0 14 // Construction/Destruction
cannam@0 15 //////////////////////////////////////////////////////////////////////
cannam@0 16
cannam@0 17 Correlation::Correlation()
cannam@0 18 {
cannam@0 19
cannam@0 20 }
cannam@0 21
cannam@0 22 Correlation::~Correlation()
cannam@0 23 {
cannam@0 24
cannam@0 25 }
cannam@0 26
cannam@0 27 void Correlation::doAutoUnBiased(double *src, double *dst, unsigned int length)
cannam@0 28 {
cannam@0 29 double tmp = 0.0;
cannam@0 30 double outVal = 0.0;
cannam@0 31
cannam@0 32 unsigned int i,j;
cannam@0 33
cannam@0 34 for( i = 0; i < length; i++)
cannam@0 35 {
cannam@0 36 for( j = i; j < length; j++)
cannam@0 37 {
cannam@0 38 tmp += src[ j-i ] * src[ j ];
cannam@0 39 }
cannam@0 40
cannam@0 41
cannam@0 42 outVal = tmp / ( length - i );
cannam@0 43
cannam@0 44 if( outVal <= 0 )
cannam@0 45 dst[ i ] = EPS;
cannam@0 46 else
cannam@0 47 dst[ i ] = outVal;
cannam@0 48
cannam@0 49 tmp = 0.0;
cannam@0 50 }
cannam@0 51 }