mirror of
https://github.com/BreizhHardware/cours-ISEN-MD.git
synced 2026-01-18 16:47:24 +01:00
Obisidian vault auto-backup: 07-01-2026 14:02:01 on . 4 files edited
This commit is contained in:
8
.obsidian/workspace.json
vendored
8
.obsidian/workspace.json
vendored
@@ -219,6 +219,10 @@
|
||||
},
|
||||
"active": "8beea5ef99c3c6ed",
|
||||
"lastOpenFiles": [
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/TP4_Experience3.m",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/Copy_of_TP4_Experience2.m",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRL1606.tmp",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRD1606.tmp",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRL0238.tmp",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRD0235.tmp",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRL1355.tmp",
|
||||
@@ -226,10 +230,6 @@
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/TP4_Experience2.asv",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/TP4_Experience2.m",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/Copy_of_TP4_Experience1.m",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRL3213.tmp",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/~WRD3209.tmp",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/TP4_Experience1.m",
|
||||
"ISEN/Traitement du signal/CIPA4/TP/TP4/TP3_Experience1.m",
|
||||
"ISEN/Réseau/CIPA4/TP/TP M02 Conversion.md",
|
||||
"Protocol Data Units (PDU).md",
|
||||
"ISEN/English/CIPA4/Elevator pitch.md",
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
%% Experiment 2 : Baseband recovery from TP4cipaQ2.wav
|
||||
|
||||
clc;
|
||||
clear;
|
||||
close all;
|
||||
|
||||
%% Load the audio
|
||||
[y, Fs] = audioread('TP4cipaQ2.wav');
|
||||
if size(y,2) > 1
|
||||
y = mean(y,2); %
|
||||
end
|
||||
|
||||
N = length(y);
|
||||
|
||||
%% i) Spectre d'amplitude en kHz
|
||||
Y = fft(y);
|
||||
magY = abs(Y);
|
||||
halfN = floor(N/2)+1;
|
||||
magY_half = magY(1:halfN);
|
||||
f = (0:halfN-1)*(Fs/N); % Hz
|
||||
f_kHz = f/1000; % kHz
|
||||
|
||||
figure;
|
||||
plot(f_kHz, magY_half,'g');
|
||||
xlabel('Frequence (kHz)');
|
||||
ylabel('|Y(f)|');
|
||||
title('Spectre amplitude du signal TP4cipaQ2');
|
||||
grid on;
|
||||
xlim([0 Fs/2000]);
|
||||
|
||||
%% Filtre passe-bas Butterworth pour recuperer la bande de base
|
||||
% Choisir une frequence de coupure Fc (en Hz) apres avoir regarde le spectre.
|
||||
Fc = 3000; % exemple : 3 kHz (a adapter si besoin)
|
||||
Wn = Fc/(Fs/2); % normalisation par Fs/2 [web:237]
|
||||
ordre = 4; % ordre du filtre (simple mais efficace)
|
||||
|
||||
[b,a] = butter(ordre, Wn, 'low'); % filtre passe-bas Butterworth
|
||||
|
||||
y_filt = filter(b,a,y); % signal filtre
|
||||
|
||||
%% ii) Spectre du signal filtre
|
||||
Yf = fft(y_filt);
|
||||
magYf = abs(Yf);
|
||||
magYf_half = magYf(1:halfN);
|
||||
|
||||
figure;
|
||||
plot(f_kHz, magYf_half,'g');
|
||||
xlabel('Frequence (kHz)');
|
||||
ylabel('|Y_f(f)|');
|
||||
title('Spectre amplitude du signal filtre');
|
||||
grid on;
|
||||
xlim([0 Fs/2000]);
|
||||
|
||||
%% iii) Ecouter le signal filtre (a lancer dans MATLAB)
|
||||
% sound(y_filt, Fs);
|
||||
71
ISEN/Traitement du signal/CIPA4/TP/TP4/TP4_Experience3.m
Normal file
71
ISEN/Traitement du signal/CIPA4/TP/TP4/TP4_Experience3.m
Normal file
@@ -0,0 +1,71 @@
|
||||
%% Experiment 3 : Recovery of a(t) from y1(t) and y2(t)
|
||||
|
||||
clc;
|
||||
clear;
|
||||
close all;
|
||||
|
||||
%% Load data from MAT-file
|
||||
|
||||
donnees3 = load('TP4cipaQ3.mat');
|
||||
y1 = donnees3.y1;
|
||||
y2 = donnees3.y2;
|
||||
y1 = y1(:);
|
||||
y2 = y2(:);
|
||||
|
||||
Fs = 96000; % Sampling frequency (Hz)
|
||||
Ts = 1/Fs; % Sampling period (s)
|
||||
N = length(y1); % Number of samples
|
||||
t = (0:N-1)*Ts; % Time axis (s)
|
||||
|
||||
%% Recover a(t) using the hint cos^2 + sin^2 = 1
|
||||
% a(t) is the envelope common to y1 and y2.
|
||||
|
||||
a = sqrt( y1.^2 + y2.^2 );
|
||||
|
||||
%% Plot y1(t) and y2(t) in time domain
|
||||
|
||||
figure('Name','y1(t) and y2(t)');
|
||||
subplot(2,1,1);
|
||||
plot(t, y1, 'g');
|
||||
xlabel('Time (s)');
|
||||
ylabel('Amplitude');
|
||||
title('y1(t) = a(t) cos(2\pi 30000 t + A)');
|
||||
grid on;
|
||||
|
||||
subplot(2,1,2);
|
||||
plot(t, y2, 'g');
|
||||
xlabel('Time (s)');
|
||||
ylabel('Amplitude');
|
||||
title('y2(t) = a(t) sin(2\pi 30000 t + A)');
|
||||
grid on;
|
||||
|
||||
%% Plot a(t) in time domain
|
||||
|
||||
figure('Name','a(t)');
|
||||
plot(t, a, 'g');
|
||||
xlabel('Time (s)');
|
||||
ylabel('Amplitude');
|
||||
title('Recovered envelope a(t) = sqrt(y1(t)^2 + y2(t)^2)');
|
||||
grid on;
|
||||
|
||||
%% Amplitude spectrum of a(t) in kHz and in dB
|
||||
|
||||
A_fft = fft(a);
|
||||
magA = abs(A_fft);
|
||||
|
||||
halfN = floor(N/2) + 1; % Positive frequencies only
|
||||
magA_half = magA(1:halfN);
|
||||
|
||||
f_Hz = (0:halfN-1)*(Fs/N); % Frequency axis (Hz)
|
||||
f_kHz = f_Hz / 1000; % Convert to kHz
|
||||
|
||||
% Convert magnitude to dB scale (20*log10), avoid log(0) using eps
|
||||
magA_dB = 20*log10(magA_half + eps);
|
||||
|
||||
figure('Name','Amplitude spectrum of a(t)');
|
||||
plot(f_kHz, magA_dB, 'g');
|
||||
xlabel('Frequency (kHz)');
|
||||
ylabel('Amplitude (dB)');
|
||||
title('Single-sided amplitude spectrum of a(t)');
|
||||
grid on;
|
||||
xlim([0 Fs/2000]); % From 0 to Nyquist frequency in kHz
|
||||
Binary file not shown.
Reference in New Issue
Block a user