comparison audioDB-internals.h @ 768:b9dbe4611dde

Adding Kullback-Leibler divergence as alternate distance function
author mas01mc
date Sat, 15 Oct 2011 17:28:07 +0000
parents ddf08008d45b
children
comparison
equal deleted inserted replaced
767:6d0d41604aba 768:b9dbe4611dde
270 result += *p++ * *q++; 270 result += *p++ * *q++;
271 } 271 }
272 return result; 272 return result;
273 } 273 }
274 274
275 static inline double audiodb_kullback_leibler(double *p, double *q, size_t count) {
276 double a,b, tmp1, tmp2, result = 0;
277 while(count--){
278 a = *p++;
279 b = *q++;
280 tmp1 = a * log( a / b );
281 if(isnan(tmp1))
282 tmp1=0.0;
283 tmp2 = b * log( b / a );
284 if(isnan(tmp2))
285 tmp2=0.0;
286 result += ( tmp1 + tmp2 ) / 2.0;
287 }
288 return result;
289 }
290
291
275 static inline void audiodb_l2norm_buffer(double *d, size_t dim, size_t nvectors, double *l) { 292 static inline void audiodb_l2norm_buffer(double *d, size_t dim, size_t nvectors, double *l) {
276 while(nvectors--) { 293 while(nvectors--) {
277 double *d1 = d; 294 double *d1 = d;
278 double *d2 = d; 295 double *d2 = d;
279 *l++ = audiodb_dot_product(d1, d2, dim); 296 *l++ = audiodb_dot_product(d1, d2, dim);
384 #define ADB_MAXSTR (512U) 401 #define ADB_MAXSTR (512U)
385 #define ADB_FILETABLE_ENTRY_SIZE (256U) 402 #define ADB_FILETABLE_ENTRY_SIZE (256U)
386 #define ADB_TRACKTABLE_ENTRY_SIZE (sizeof(uint32_t)) 403 #define ADB_TRACKTABLE_ENTRY_SIZE (sizeof(uint32_t))
387 #define ADB_DISTANCE_TOLERANCE (1e-6) 404 #define ADB_DISTANCE_TOLERANCE (1e-6)
388 405
389 #define ADB_DEFAULT_DATASIZE (1355U) /* in MB */ 406 #define ADB_DEFAULT_DATASIZE (2000U) /* in MB */
390 #define ADB_DEFAULT_NTRACKS (20000U) 407 #define ADB_DEFAULT_NTRACKS (200000U)
391 #define ADB_DEFAULT_DATADIM (9U) 408 #define ADB_DEFAULT_DATADIM (12U)
392 409
393 #define ADB_FIXME_LARGE_ADB_SIZE (ADB_DEFAULT_DATASIZE+1) 410 #define ADB_FIXME_LARGE_ADB_SIZE (ADB_DEFAULT_DATASIZE+1)
394 #define ADB_FIXME_LARGE_ADB_NTRACKS (ADB_DEFAULT_NTRACKS+1) 411 #define ADB_FIXME_LARGE_ADB_NTRACKS (ADB_DEFAULT_NTRACKS+1)
395 412
396 #define ADB_OLD_MAGIC ('O'|'2'<<8|'D'<<16|'B'<<24) 413 #define ADB_OLD_MAGIC ('O'|'2'<<8|'D'<<16|'B'<<24)