#include #include #include #include // État du rythme cardiaque enum class HeartRateState { NORMAL, BRADYCARDIA, TACHYCARDIA }; // Fonction pour générer un signal de battement cardiaque std::vector generateHeartbeatSignal(HeartRateState state, int durationSeconds = 10, int sampleRate = 1000) { int bpm; switch (state) { case HeartRateState::BRADYCARDIA: bpm = 40 + rand() % 15; // 40-55 BPM break; case HeartRateState::TACHYCARDIA: bpm = 110 + rand() % 30; // 110-140 BPM break; default: bpm = 60 + rand() % 40; // 60-100 BPM break; } int totalSamples = durationSeconds * sampleRate; int samplesPerBeat = (60.0 / bpm) * sampleRate; std::vector signal(totalSamples, 0.0f); for (int i = 0; i < totalSamples; i += samplesPerBeat) { if (i < totalSamples) signal[i] = 1.0f; // Pic R if (i + 1 < totalSamples) signal[i + 1] = 0.5f; if (i + 2 < totalSamples) signal[i + 2] = 0.2f; } return signal; } // Pause active sans utiliser thread void waitMilliseconds(int ms) { auto start = std::chrono::high_resolution_clock::now(); while (std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - start).count() < ms) { // boucle vide } } // Affichage du signal void printSignal(const std::vector& signal, int sampleRate) { for (size_t i = 0; i < signal.size(); ++i) { std::cout << signal[i] << "\n"; waitMilliseconds(1000 / sampleRate); } } // ----------- FONCTION PRINCIPALE ------------ int main() { std::cout << "Simulation d’un signal de battement cardiaque\n"; // Tu peux changer ici : NORMAL / BRADYCARDIA / TACHYCARDIA HeartRateState state = HeartRateState::TACHYCARDIA; std::vector signal = generateHeartbeatSignal(state, 5, 100); // 5 secondes, 100 Hz printSignal(signal, 100); return 0; }