% TP8_ProcessusAutoRegressif.m % % Ce script traite d'un processus auto-régressif (AR) d'ordre 2. % Il établit les équations de Yule-Walker, calcule les valeurs théoriques % de la fonction d'autocorrélation, génère une réalisation du processus, % calcule numériquement l'autocorrélation et compare les résultats théoriques et numériques. % ---------------------------- Paramètres ---------------------------- % Coefficients du modèle AR(2) a1 = -0.8; a2 = 0.3; % Longueur de la réalisation N = 1024; % ------------------------ Équations de Yule-Walker ------------------- % Les équations de Yule-Walker pour un AR(2) sont : % ΓZ(0) + a1 ΓZ(1) + a2 ΓZ(2) = σ_N^2 % ΓZ(1) + a1 ΓZ(0) + a2 ΓZ(1) = 0 % ΓZ(2) + a1 ΓZ(1) + a2 ΓZ(0) = ΓZ(1) % Supposons que σ_N^2 = 1 (car N(k) ~ N(0,1)) % On peut écrire ces équations sous forme matricielle A * Gamma = b A = [1, a1, a2; a1, 1, a1; a2, a1, 1]; b = [1; 0; 0]; % Résolution pour ΓZ(0), ΓZ(1), ΓZ(2) Gamma = A \ b; Gamma0 = Gamma(1); Gamma1 = Gamma(2); Gamma2 = Gamma(3); % Affichage des résultats théoriques fprintf('Valeurs théoriques de la fonction d''autocorrélation:\n'); fprintf('ΓZ(0) = %.4f\n', Gamma0); fprintf('ΓZ(1) = %.4f\n', Gamma1); fprintf('ΓZ(2) = %.4f\n', Gamma2); % -------------------------- Simulation du Processus AR(2) ------------- % Génération de la séquence N(k) ~ N(0,1) N_seq = randn(N, 1); % Initialisation du processus Z(k) Z = zeros(N, 1); % Génération du processus selon l'équation AR(2) for k = 3:N Z(k) = -a1 * Z(k-1) - a2 * Z(k-2) + N_seq(k); end % ------------------------ Affichage de la Réalisation ----------------- figure; plot(1:N, Z, 'b'); xlabel('Temps (k)'); ylabel('Z(k)'); title('Réalisation du Processus Auto-Régressif Z(k)'); grid on; % ----------------------- Calcul de l'Autocorrélation ------------------- % Calcul de l'autocorrélation numérique avec xcorr [autocorr_num, lags] = xcorr(Z, 2, 'unbiased'); % Calcul jusqu'au lag 2 % Extraction des autocorrélations pour lag 0, 1, 2 Gamma_num = autocorr_num(lags >=0 & lags <=2); % Affichage des autocorrélations numériques fprintf('\nAutocorrélations numériques:\n'); fprintf('ΓZ(0) = %.4f\n', Gamma_num(1)); fprintf('ΓZ(1) = %.4f\n', Gamma_num(2)); fprintf('ΓZ(2) = %.4f\n', Gamma_num(3)); % ------------------------ Comparaison Théorie vs Numérique ------------- % Affichage comparatif figure; stem(0:2, [Gamma0, Gamma1, Gamma2], 'filled', 'DisplayName', 'Théorique'); hold on; stem(0:2, Gamma_num', 'r--', 'DisplayName', 'Numérique'); xlabel('Lag'); ylabel('Autocorrélation ΓZ(lag)'); title('Comparaison des Autocorrélations Théoriques et Numériques'); legend; grid on; hold off; % ----------------------------- Fin du Script --------------------------