Files
FCES-native/include/fces/oscillation.hpp
2026-05-20 00:18:23 +02:00

33 lines
700 B
C++

#pragma once
/**
* @file oscillation.hpp
* @brief FFT-based oscillation detection (Phase 25).
*/
#include <vector>
namespace fces {
class OscillationDetector {
public:
static constexpr int WINDOW_SIZE = 64;
static constexpr float POWER_THRESHOLD = 0.5f;
static constexpr int MIN_PERIOD = 4;
static constexpr int MAX_PERIOD = 16;
void update(float loss);
bool detect() const;
float get_score() const;
float get_variance_50() const;
void reset();
private:
std::vector<float> loss_history_;
static std::vector<float> detrend(const std::vector<float> &signal);
static std::vector<float>
compute_power_spectrum(const std::vector<float> &signal);
};
} // namespace fces