# -*- coding: utf-8 -*-
"""
Created on Sun Apr 13 23:19:21 2025

@author: AKourgli
"""

import numpy as np
import matplotlib.pyplot as plt

# Paramètres du signal
fs = 1000          # Fréquence d'échantillonnage (Hz)
t = np.linspace(0, 2, 2 * fs)  # De 0 à 2 secondes
f = 5              # Fréquence du signal (Hz)

# Génération des signaux
sinus = np.sin(2 * np.pi * f * t)
cosinus = np.cos(2 * np.pi * f * t)
somme = sinus + cosinus  # Signal combiné (phase shift de π/4)

# Calcul des corrélations en mode 'same' pour centrer le résultat
correlation_avec_cos = np.correlate(somme, cosinus, mode='same')
correlation_avec_sin = np.correlate(somme, sinus, mode='same')

# Création des axes de décalage (lags) pour 'same'
N = len(t)
lags = np.arange(-N//2, N//2)  # Décalages centrés
temps_lags = lags / fs  # Conversion en secondes

# Ajustement du décalage dû à la phase du signal combiné
phase_shift = np.pi/4  # Déphasage de la somme (sin(t) + cos(t) = √2 sin(t + π/4))
tau_shift = phase_shift / (2 * np.pi * f)  # Conversion en secondes
temps_lags_shifted = temps_lags - tau_shift  # Correction du décalage

# Tracé des résultats
plt.figure(figsize=(12, 8))

# Signal combiné et composantes
plt.subplot(3, 1, 1)
plt.plot(t, sinus, label='$\sin(2\pi f t)$', color='blue', alpha=0.5)
plt.plot(t, cosinus, label='$\cos(2\pi f t)$', color='red', alpha=0.5)
plt.plot(t, somme, label='$\sin(t) + \cos(t)$', color='purple')
plt.title('Signaux originaux et leur somme')
plt.xlabel('Temps (s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.legend()

# Corrélation avec Cosinus (décalage corrigé)
plt.subplot(3, 1, 2)
plt.plot(temps_lags_shifted, correlation_avec_cos, color='darkred', linewidth=2)
plt.title('Corrélation avec $\cos(t)$ ')
plt.xlabel('Décalage temporel (s)')
plt.ylabel('Amplitude')
plt.xlim(-0.2, 0.2)  # Zoom pour voir les zéros
plt.axvline(0, color='black', linestyle='--', alpha=0.5)
plt.grid(True)

# Corrélation avec Sinus (décalage corrigé)
plt.subplot(3, 1, 3)
plt.plot(temps_lags_shifted, correlation_avec_sin, color='darkblue', linewidth=2)
plt.title('Corrélation avec $\sin(t)$')
plt.xlabel('Décalage temporel (s)')
plt.ylabel('Amplitude')
plt.xlim(-0.2, 0.2)  # Zoom pour voir les zéros
plt.axvline(0, color='black', linestyle='--', alpha=0.5)
plt.grid(True)

plt.tight_layout()
plt.show()