mirror of
https://github.com/BreizhHardware/cours-ISEN-MD.git
synced 2026-03-18 21:50:46 +01:00
Obisidian vault auto-backup: 22-10-2025 16:00:35 on . 1 files edited
This commit is contained in:
106
ISEN/Traitement du signal/CIPA4/TP/TP1/TP1_Experience4.m
Normal file
106
ISEN/Traitement du signal/CIPA4/TP/TP1/TP1_Experience4.m
Normal file
@@ -0,0 +1,106 @@
|
||||
%% Expérience 4 : Analyse du Signal 'holiday_offer.mat'
|
||||
|
||||
clc; % Nettoie la fenêtre de commande
|
||||
clear; % Supprime toutes les variables de l'espace de travail
|
||||
close all; % Ferme toutes les figures ouvertes
|
||||
|
||||
% --- 1. Chargement et Paramètres ---
|
||||
try
|
||||
% Charge le fichier .mat. Il contiendra probablement une variable de signal
|
||||
% (souvent nommée 'y' ou 'data')
|
||||
load('holiday_offer.mat');
|
||||
|
||||
% On suppose que la variable contenant le signal est nommée 'y' ou 'data'.
|
||||
% Si votre fichier .mat a un nom de variable différent, changez 'y' ci-dessous.
|
||||
% Par exemple, si la variable s'appelle 'signal_data', utilisez signal_data = y;
|
||||
if exist('y', 'var')
|
||||
signal = y;
|
||||
elseif exist('data', 'var')
|
||||
signal = data;
|
||||
else
|
||||
% Si le nom de la variable est inconnu, cela pourrait causer une erreur.
|
||||
% Vous devriez vérifier le nom de la variable après le 'load'.
|
||||
error('Variable de signal non trouvée (attendue: y ou data). Vérifiez le fichier .mat.');
|
||||
end
|
||||
|
||||
catch
|
||||
error('Erreur lors du chargement de ''holiday_offer.mat''. Assurez-vous que le fichier est présent.');
|
||||
end
|
||||
|
||||
Fs = 11025; % Fréquence d'échantillonnage (samples/second)
|
||||
N = length(signal); % Longueur totale du signal
|
||||
Ts = 1/Fs; % Période d'échantillonnage
|
||||
|
||||
% --- 2. Tracé i/ : Échantillons 18100 à 18300 ---
|
||||
|
||||
index_i_start = 18100;
|
||||
index_i_end = 18300;
|
||||
t_i = (index_i_start : index_i_end) * Ts; % Vecteur temps
|
||||
|
||||
figure('Name', 'Expérience 4 - i/');
|
||||
plot(t_i, signal(index_i_start : index_i_end), 'b');
|
||||
title('i/ Portion du signal : Échantillons 18100 à 18300');
|
||||
xlabel('Temps (s)');
|
||||
ylabel('Amplitude');
|
||||
grid on;
|
||||
|
||||
% --- 3. Tracé ii/ : Échantillons 18300, 18280, 18260, ..., 18100 ---
|
||||
|
||||
% Création du vecteur d'indices avec un pas de -20
|
||||
indices_ii = 18300 : -20 : 18100;
|
||||
t_ii = indices_ii * Ts; % Vecteur temps
|
||||
|
||||
figure('Name', 'Expérience 4 - ii/');
|
||||
plot(t_ii, signal(indices_ii), 'r.'); % Utilisation de points pour montrer les échantillons discrets
|
||||
title('ii/ Portion du signal : Échantillons [18300 : -20 : 18100]');
|
||||
xlabel('Temps (s)');
|
||||
ylabel('Amplitude');
|
||||
grid on;
|
||||
|
||||
% --- 4. Tracé iii/ : Échantillons 18100, 18101...18300, 8100, 8101...8300 ---
|
||||
|
||||
% Création du premier bloc (continu) : 18100 à 18300
|
||||
indices_iii_1 = 18100 : 18300;
|
||||
% Création du second bloc (continu) : 8100 à 8300
|
||||
indices_iii_2 = 8100 : 8300;
|
||||
|
||||
% Combinaison des deux blocs d'indices
|
||||
indices_iii = [indices_iii_1, indices_iii_2];
|
||||
|
||||
% Vérification que les indices sont valides (entre 1 et N)
|
||||
indices_iii = indices_iii(indices_iii >= 1 & indices_iii <= N);
|
||||
|
||||
t_iii = (1 : length(indices_iii)) * Ts; % Un nouveau vecteur temps pour le tracé combiné
|
||||
|
||||
figure('Name', 'Expérience 4 - iii/');
|
||||
% Le tracé d'un vecteur d'indices non consécutifs donne des lignes étranges
|
||||
% Par conséquent, nous traçons le signal en utilisant un index linéaire
|
||||
% et notons que la représentation temporelle est "segmentée"
|
||||
plot(indices_iii, signal(indices_iii), 'g-');
|
||||
title('iii/ Portion du signal : Échantillons [18100:18300] et [8100:8300]');
|
||||
xlabel('Indice d''échantillon (n)'); % Changement d'étiquette pour plus de clarté
|
||||
ylabel('Amplitude');
|
||||
grid on;
|
||||
|
||||
% --- 5. Tracé iv/ : Période 1.9 sec à 2 sec ---
|
||||
|
||||
T_start = 1.9; % Temps de début (s)
|
||||
T_end = 2.0; % Temps de fin (s)
|
||||
|
||||
% Conversion des temps en indices d'échantillons
|
||||
index_iv_start = round(T_start * Fs) + 1; % +1 car MATLAB commence à l'index 1
|
||||
index_iv_end = round(T_end * Fs);
|
||||
|
||||
% Assurer que les indices sont dans les limites du signal
|
||||
index_iv_start = max(1, index_iv_start);
|
||||
index_iv_end = min(N, index_iv_end);
|
||||
|
||||
indices_iv = index_iv_start : index_iv_end;
|
||||
t_iv = indices_iv * Ts; % Vecteur temps
|
||||
|
||||
figure('Name', 'Expérience 4 - iv/');
|
||||
plot(t_iv, signal(indices_iv), 'm');
|
||||
title('iv/ Portion du signal : Temps 1.9 s à 2.0 s');
|
||||
xlabel('Temps (s)');
|
||||
ylabel('Amplitude');
|
||||
grid on;
|
||||
Reference in New Issue
Block a user