Mercurial > hg > libxtract
comparison src/scalar.c @ 225:62e797c2974a
correction to xtract_odd_even_ratio
author | Sean Enderby <sean.enderby@gmail.com> |
---|---|
date | Mon, 24 Feb 2014 14:32:04 +0000 |
parents | fdbef1474be9 |
children | cabf2f465d1b |
comparison
equal
deleted
inserted
replaced
224:5ca682ce3392 | 225:62e797c2974a |
---|---|
620 return XTRACT_SUCCESS; | 620 return XTRACT_SUCCESS; |
621 } | 621 } |
622 | 622 |
623 int xtract_spectral_inharmonicity(const double *data, const int N, const void *argv, double *result) | 623 int xtract_spectral_inharmonicity(const double *data, const int N, const void *argv, double *result) |
624 { | 624 { |
625 | |
626 int n = N >> 1, h = 0; | 625 int n = N >> 1, h = 0; |
627 double num = 0.0, den = 0.0, fund; | 626 double num = 0.0, den = 0.0, fund; |
628 const double *freqs, *amps; | 627 const double *freqs, *amps; |
629 | 628 |
630 fund = *(double *)argv; | 629 fund = *(double *)argv; |
654 | 653 |
655 } | 654 } |
656 | 655 |
657 int xtract_odd_even_ratio(const double *data, const int N, const void *argv, double *result) | 656 int xtract_odd_even_ratio(const double *data, const int N, const void *argv, double *result) |
658 { | 657 { |
659 | 658 int n = N >> 1, h = 0; |
660 int M = (N >> 1), n; | 659 double odd = 0.0, even = 0.0, fund, temp; |
661 | 660 const double *freqs; |
662 double odd = 0.0, even = 0.0, temp; | 661 |
663 | 662 fund = *(double *)argv; |
664 for(n = 0; n < M; n++) | 663 freqs = data + n; |
664 | |
665 while(n--) | |
665 { | 666 { |
666 if((temp = data[n])) | 667 if((temp = data[n])) |
667 { | 668 { |
668 if(XTRACT_IS_ODD(n)) | 669 h = round(freqs[n] / fund); |
670 if(XTRACT_IS_ODD(h)) | |
669 { | 671 { |
670 odd += temp; | 672 odd += temp; |
671 } | 673 } |
672 else | 674 else |
673 { | 675 { |