aboutsummaryrefslogtreecommitdiff
path: root/src/scalar.c
diff options
context:
space:
mode:
authorJamie Bullock <jamie@postlude.co.uk>2011-03-30 10:51:39 +0000
committerJamie Bullock <jamie@postlude.co.uk>2011-03-30 10:51:39 +0000
commitd88ff54ee9be978bbdb44cedacb9b3df598b1017 (patch)
treecf80ee4d0959024fc598aba8741e1b592f7e6147 /src/scalar.c
parentd43418e0293c2f1f9954e193a9dcc5b82f5ce0c3 (diff)
downloadLibXtract-d88ff54ee9be978bbdb44cedacb9b3df598b1017.tar.gz
LibXtract-d88ff54ee9be978bbdb44cedacb9b3df598b1017.tar.bz2
LibXtract-d88ff54ee9be978bbdb44cedacb9b3df598b1017.zip
- reimplemented xtract_spectral_variance() xtract_spectral_skewness() and xtract_spectral_kurtosis() using correct maths
- removed xtract_spectral_average_deviation()
Diffstat (limited to 'src/scalar.c')
-rw-r--r--src/scalar.c36
1 files changed, 13 insertions, 23 deletions
diff --git a/src/scalar.c b/src/scalar.c
index de1ac03..72422fb 100644
--- a/src/scalar.c
+++ b/src/scalar.c
@@ -186,11 +186,11 @@ int xtract_spectral_variance(const float *data, const int N, const void *argv, f
*result = 0.f;
while(m--){
- A += amps[m];
- *result += powf((freqs[m] - *(float *)argv) * amps[m], 2);
+ A += amps[m];
+ *result += powf(freqs[m] - ((float *)argv)[0], 2) * amps[m];
}
- *result = *result / (A /*- 1*/);
+ *result = *result / A;
return XTRACT_SUCCESS;
}
@@ -202,7 +202,7 @@ int xtract_spectral_standard_deviation(const float *data, const int N, const voi
return XTRACT_SUCCESS;
}
-int xtract_spectral_average_deviation(const float *data, const int N, const void *argv, float *result){
+/*int xtract_spectral_average_deviation(const float *data, const int N, const void *argv, float *result){
int m;
float A = 0.f;
@@ -216,19 +216,18 @@ int xtract_spectral_average_deviation(const float *data, const int N, const void
*result = 0.f;
while(m--){
- A += amps[m];
- *result += fabsf((amps[m] * freqs[m]) - *(float *)argv);
+ A += amps[m];
+ *result += fabsf((amps[m] * freqs[m]) - *(float *)argv);
}
*result /= A;
return XTRACT_SUCCESS;
-}
+}*/
int xtract_spectral_skewness(const float *data, const int N, const void *argv, float *result){
int m;
- float temp, A = 0.f;
const float *freqs, *amps;
m = N >> 1;
@@ -238,14 +237,10 @@ int xtract_spectral_skewness(const float *data, const int N, const void *argv,
*result = 0.f;
- while(m--){
- A += amps[m];
- temp = ((amps[m] * freqs[m]) -
- ((float *)argv)[0]) / ((float *)argv)[1];
- *result += powf(temp, 3);
- }
+ while(m--)
+ *result += powf(freqs[m] - ((float *)argv)[0], 3) * amps[m];
- *result /= A;
+ *result /= powf(((float *)argv)[1], 3);
return XTRACT_SUCCESS;
}
@@ -253,7 +248,6 @@ int xtract_spectral_skewness(const float *data, const int N, const void *argv,
int xtract_spectral_kurtosis(const float *data, const int N, const void *argv, float *result){
int m;
- float temp, A = 0.f;
const float *freqs, *amps;
m = N >> 1;
@@ -263,14 +257,10 @@ int xtract_spectral_kurtosis(const float *data, const int N, const void *argv,
*result = 0.f;
- while(m--){
- A += amps[m];
- temp = ((amps[m] * freqs[m]) -
- ((float *)argv)[0]) / ((float *)argv)[1];
- *result += powf(temp, 4);
- }
+ while(m--)
+ *result += powf(freqs[m] - ((float *)argv)[0], 4) * amps[m];
- *result /= A;
+ *result /= powf(((float *)argv)[1], 4);
*result -= 3.0f;
return XTRACT_SUCCESS;