diff --git a/question_21.asv b/question_21.asv new file mode 100644 index 0000000000000000000000000000000000000000..bf76cfc959a12d3680fe04587952c7dbe38ed2d4 --- /dev/null +++ b/question_21.asv @@ -0,0 +1,71 @@ +fs = 10e3; % Fréquence d'échantillonnage +T = 2*pi; +t = -1:1/fs:1; % Durée du signal + + +x_1 =square(2*pi*t/T); + +%fft +X_1 = 10*log10(abs(fftshift(fft(x)))); +N =length(t) ; +freq = (-N/2:N/2-1)*(1/(T*N)); + +figure; +stem(freq, X_1, '.') % Tracé du signal +xlabel('f (Hz)') +ylabel('10log(|X_1|)') +title('spectre du signal carré'); + + +x_2 = sawtooth(2*pi*t/T); +plot(t,x_2) +title('sawtooth') + +%fft +X_2 = 10*log10(abs(fftshift(fft(x_2)))); + +figure; +stem(freq, X_2, '.') +xlabel('f (Hz)') +ylabel('10log(|X_1|)') +title('spectre du signal en dent de scie'); + +%question 2.2------------------------------------------ + +% Paramètres +T = 2*pi; +N = 1000; +t = linspace(-T/2, T/2, N); + +% Signal carré en entrée (amplitude ±1) +x = sign(sin(2*pi*t/T)); + +% Filtrage : y(k) = 1/2 (x(k) + x(k-1)) +y = zeros(size(x)); +y(2:end) = 0.5 * (x(2:end) + x(1:end-1)); + +% FFT +X = fftshift(fft(x))/N; +Y = fftshift(fft(y))/N; +f = (-N/2:N/2-1)*(1/(T/N)); % Axe fréquentiel +omega = 2*pi*f*(T/N); % Fréquence angulaire en rad/sample + +% Réponse théorique du filtre +H = abs(cos(omega/2)); + +% Affichage +figure; +subplot(3,1,1); +plot(t, x); title('Signal d''entrée x(k)'); + +subplot(3,1,2); +plot(t, y); title('Signal filtré y(k)'); + +subplot(3,1,3); +plot(f, abs(Y), 'b', 'DisplayName', '|Y(f)|'); +hold on; +plot(f, abs(X).*H, 'r--', 'DisplayName', '|X(f)| × |H(f)| (théorique)'); +legend; xlabel('Fréquence (Hz)'); +title('Spectre de sortie comparé à la théorie'); +xlim([-10 10]); + diff --git a/question_21.m b/question_21.m index 282b472a1c75e94ed2a85650df6812f8439428f3..0edf22b9cb66f653a12f7c6748ecc9605ef75fc6 100644 --- a/question_21.m +++ b/question_21.m @@ -1,5 +1,63 @@ fs = 10e3; % Fréquence d'échantillonnage -t = 0:1/fs:1.5; % Durée du signal -x = square(2*pi*50*t, 25); % Génération du signal carré avec un cycle de charge de 25% -plot(t, x) % Tracé du signal -axis([0 0.2 -1 1]) % Ajustement des limites de l'axe \ No newline at end of file +T = 1/10; +t = -1:1/fs:1; % Durée du signal + + +x_1 =square(2*pi*t/T); + +%fft +X_1 = 10*log10(abs(fftshift(fft(x)))); +N =length(t) ; +freq = (-N/2:N/2-1)*(1/(T*N)); + +figure; +stem(freq, X_1, '.') % Tracé du signal +xlabel('f (Hz)') +ylabel('10log(|X_1|)') +title('spectre du signal carré'); + + +x_2 = sawtooth(2*pi*t/T); +plot(t,x_2) +title('sawtooth') + +%fft +X_2 = 10*log10(abs(fftshift(fft(x_2)))); + +figure; +stem(freq, X_2, '.') +xlabel('f (Hz)') +ylabel('10log(|X_1|)') +title('spectre du signal en dent de scie'); + +%question 2.2------------------------------------------ + +% Filtrage : y(k) = 1/2 (x(k) + x(k-1)) +y = zeros(size(x_1)); +y(2:end) = 0.5 * (x_1(2:end) + x_1(1:end-1)); + +% FFT +X2 = fftshift(fft(x_1))/N; +Y = fftshift(fft(y))/N; +f = (-N/2:N/2-1)*(1/(T/N)); % Axe fréquentiel +omega = 2*pi*f*(T/N); % Fréquence angulaire en rad/sample + +% Réponse théorique du filtre +H = abs(cos(omega/2)); + +% Affichage +figure; +subplot(3,1,1); +plot(t, x_1); title('Signal d''entrée x(k)'); + +subplot(3,1,2); +plot(t, y); title('Signal filtré y(k)'); + +subplot(3,1,3); +plot(f, abs(Y), 'b', 'DisplayName', '|Y(f)|'); +hold on; +plot(f, abs(X2).*H, 'r', 'DisplayName', '|X(f)| × |H(f)| (théorique)'); +legend; xlabel('Fréquence (Hz)'); +title('Spectre de sortie comparé à la théorie'); +xlim([-10 10]); +