eis/eqpalg/feature_extraction/ass_funs.000cc

31 lines
911 B
Plaintext
Raw Permalink Normal View History

#include "ass_funs.h"
namespace AssFuns {
SlipsReturn SlipsCheck(const vector<double>& data, const double& th) {
SlipsReturn res = {0, 0};
size_t data_num = data.size();
if (data_num < 3) {
return res;
}
double data_sum = 0;
double data_max = data[0];
double data_min = data[0];
for (double item : data) {
data_sum += item;
data_max = std::max(data_max, item);
data_min = std::min(data_min, item);
}
double data_ave = (data_sum - data_max - data_min) / double(data_num - 2);
double diff_max =
std::max(fabs(data_max - data_ave), fabs(data_max - data_ave));
for (int i = 0; i < data_num; i++) {
double diff_now = fabs(data[i] - data_ave);
if (diff_now > fabs(data_ave) * th &&
fabs(diff_now - diff_max) < std::numeric_limits<double>::epsilon()) {
res[0] = 1;
res[1] = i;
return res;
}
}
return res;
}
} // namespace AssFuns