Bonjour à tous et à toutes.
Je fais appel à vous car je suis tombé sur un problème avec Simulink (avec Matlab en parallèle) que je ne comprends pas. Voici la situation :
J'ai le signal "créneau" égal à 1 sur [0,10^-3] et -1 sur [10^-3,2*10^-3] et il est périodique de période T=2*10^-3 secondes. Ce que je souhaite faire c'est simplement d'appliquer une filtre "analogique" (passe-bas de type Butterworth) de fréquence de coupure 12800 Hz et de translater le spectre (grâce à une modulation d'amplitude) de nu=14000 Hz (sans perte d'amplitude, c'est à dire que je multiplie par 2*cos(2*pi*14000)). J'utilise Simulink pour créer les signaux et effectuer les opérations (addition, produit). Pour l'analyse des spectres, j'utilise "To Workspace" et les commandes "habituelles" (fft et fftshift). Je joins le code ci-dessous.
Mon problème intervient à la deuxième étape. Pour la première, observer le spectre du signal filtré ne m'a posé aucun problème (j'obtiens bien le même spectre que celui que j'ai calculé). Mais lorsque je souhaite observer le spectre du signal modulé, j'obtiens un résultat différent de ce que je m'attendais : j'obtiens des amplitudes qui ne sont pas égales... Tout d'abord, je devrais normalement avoir une translation du spectre, donc garder la symétrie, ce qui n'est pas. Et les valeurs ne sont pas égales. Et j'ai beau changer le temps de simulation, le résultat est le même. Ma question : pourquoi un tel phénomène et comment le corriger ? Je cherche vraiment à comprendre pourquoi. Je joins ce que j'obtiens ainsi qu'un aperçu de Simulink.
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 %%% Observation du spectre initial après filtrage par un filtre analogique %%% de type Butterworth. Données récupérées grâce à Simulink. %N.B : le temps d'acquisition est fixé dans Simulink. N=length(Spectre_1); Ts=1/26000; %Période d'échantillonnage (ici 26000>2*12800). On a la relation Ta/Ts=N. X=-N/2/(N*Ts):1/(N*Ts):(N/2-1)/(N*Ts); %Création de l'axe des abscisses. C=1/N*fftshift(fft(Spectre_1)); %Ici le fenêtrage temporel a un role non négligeable %Il est nécessaire de le prendre en compte et de diviser Ts par le temps %d'acquisition Ta. On a donc : Ts/Ta=1/N. D'où le 1/N. figure plot(X,abs(C)) %On trace le spectre du signal x. %%% Observation du spectre après modulation d'amplitude. N1=length(spectre_2); Ts1=1/(54000); %Ici 54000>2(12800+14000) [étape de modulation] X1=-N1/2/(N1*Ts1):1/(N1*Ts1):(N1/2-1)/(N1*Ts1); C1=1/N1*fftshift(fft(spectre_2)); figure plot(X1,abs(C1))
Partager