Corrigé Banque PT 2025 Informatique et modélisation PT — Partie D (Q23 à Q32) : Codes C/A : corrélation, retard, acquisition et suréchantillonnage
Sujet officiel du concours Banque PT, session 2025, épreuve Informatique et modélisation PT. Corrigé rédigé par Ibrahim Alame.
Sujet officiel (PDF, site du concours)
Énoncé
Réponses en Python. Le message reçu est le « OU exclusif » du message de navigation et du code C/A : un bit de navigation égal à 1 inverse le code.
| Navigation, | 0 | 1 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C/A, | 1 | 0 | 0 | … | … | 1 | 1 | 0 | 0 | … | … | 1 | ||
| Transmis | 1 | 0 | 0 | … | … | 1 | 0 | 1 | 1 | … | … | 0 |
Figure 7 — Constitution du message émis par les satellites.
Convention NRZ : un code est une liste de valeurs , indices à , -périodique ( pour un code C/A, émis en ). Corrélation : . Code retardé de : terme d'indice égal à (indice modulo ) ; ainsi retardé de 1 donne .
Q23. Fonction corr(a, b) renvoyant la corrélation (sans sum).
Q24. Fonction retarde(a, k) renvoyant le code retardé de k.
Propriétés : (1) l'autocorrélation vaut 1 ; (2) un code et ce code retardé () ; (3) deux codes de satellites différents ont une corrélation quasi nulle.
Q25. Montrer la propriété 1.
Q26. Montrer que ; quand vaut-elle ?
Q27. Nombre de codes C/A possibles, sous la forme (avec ).
codeCA(p, q) renvoie le code (1023 valeurs ) du satellite repéré par .
Q28. Construire code1 (, ), code2 (, ), la liste de listes codes1 (codes1[i] : code1 retardé de i, ), puis correls11 et correls12 (corrélations de codes1[i] avec code1, avec code2).
Figure 8 — Corrélation du code 1 retardé avec les codes 1 et 2 (un point sur six).
Acquisition : T[i][j] est la corrélation du message reçu avec le code du satellite i retardé de j bits ; le bon couple maximise sa valeur absolue.
Q29. Fonction indmax(T) renvoyant ce couple (i, j) ; assert sur T[0] non vide.
Q30. Avec , distance parcourue pendant la transmission d'un bit (résolution de la méthode).
Q31. Fonction surech(a, k) répétant fois chaque terme (surech([1,0],3) vaut [1,1,1,0,0,0]).
Q32. Complexité du calcul des corrélations (tous les retards) pour des codes de échantillons ; facteur sur le temps de calcul si l'on suréchantillonne d'un facteur 100.
Corrigé
Tous les programmes ci-dessous ont été exécutés avec une fonction codeCA réelle (générateur de codes de Gold du GPS, registres à décalage de 10 bits), qui redonne la figure 8.
Q23. On accumule les produits terme à terme dans une boucle, puis on divise par la longueur.
def corr(a, b):
"""Corrélation de deux codes a et b de même longueur n :
(1/n) * somme des a[i]*b[i]. Renvoie un flottant."""
n = len(a)
s = 0 # somme partielle des produits
for i in range(n):
s = s + a[i] * b[i]
return s / n # division flottante
Le coût est d'une multiplication et d'une addition par terme : .
Q24. D'après la définition 2, le terme d'indice du code retardé est , l'indice étant pris modulo . L'opérateur % de Python renvoie un reste dans même pour un dividende négatif, ce qui couvre aussi les négatifs (avance) et les .
def retarde(a, k):
"""Code a retardé de k (k entier relatif) : le terme d'indice i
vaut a[i-k], l'indice étant pris modulo n (périodicité)."""
n = len(a)
return [a[(i - k) % n] for i in range(n)]
Vérification sur l'exemple du sujet : retarde([-1, 1, 1, 1], 1) renvoie [1, -1, 1, 1].
Q25. Chaque terme vaut , donc pour tout :
Q26. Chaque produit vaut (termes égaux) ou (termes opposés). La somme de tels termes est comprise entre et , d'où
100 % gratuit
La suite du corrigé est sur Adloun
Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.
Voir le corrigé complet, gratuitementInscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.