Commit 991e4584 by lvshi.gong

修改算法

parent 8d1b776c
......@@ -5,6 +5,8 @@
#include <cmath>
#include <iostream>
#include <complex>
#include <sys/time.h>
#include "spdlog/spdlog.h"
#include "common.h"
using namespace std;
......@@ -49,6 +51,9 @@ SignalFeatures FeatureExtractor::extract_features(const std::vector<float>& sign
return features;
}
unsigned long elapsed_time = 0;
struct timeval start,end;
gettimeofday(&start, NULL);
std::vector<float> processed_signal = signal;
// 1. 高通滤波处理 - 使用预定义系数
......@@ -83,8 +88,10 @@ SignalFeatures FeatureExtractor::extract_features(const std::vector<float>& sign
}
}
gettimeofday(&end, NULL);
elapsed_time = (end.tv_sec - start.tv_sec) * 1000L + (end.tv_usec - start.tv_usec)/1000;
SPDLOG_LOGGER_DEBUG(spdlog::get("logger"),"[extract_features] elapsed_time: {}", elapsed_time);
return features;
//存sqlite
}
std::vector<float> FeatureExtractor::filtfilt(const std::vector<float>& b, const std::vector<float>& a, const std::vector<float>& x)
......@@ -358,7 +365,6 @@ bool FeatureExtractor::extract_time_domain_features(const std::vector<float>& si
sum_squares += square_val;
sum_abs += abs_val;
sum_sqrt_abs += std::sqrt(abs_val);
sum_fourth += square_val * square_val;
if (val > peak) peak = val;
}
......@@ -376,9 +382,12 @@ bool FeatureExtractor::extract_time_domain_features(const std::vector<float>& si
features.Envelope_Std = std::sqrt(variance);
// 计算峭度需要方差不为零
sum_fourth = 0.0f;
for (size_t i = 0; i < N; ++i)
sum_fourth += (signal[i]-mean)*(signal[i]-mean)*(signal[i]-mean)*(signal[i]-mean);
if (variance > 1e-10f) {
float mean_fourth = sum_fourth / N;
features.Envelope_Kurtosis = (mean_fourth) / (mean_squares * mean_squares) - 3.0f;
features.Envelope_Kurtosis = (mean_fourth) / (variance * variance) - 3.0f;
} else {
features.Envelope_Kurtosis = 0.0f;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment