Outils Informatiques en Télécommunications
Outils Informatiques en Télécommunications
L’INGENIEURD
’ALGOR
2e année Télécommunication
INTRODUCTION
Dans le monde en évolution rapide des télécommunications, l'ingénieur moderne ne peut plus se contenter des seules
connaissances théoriques. La conception, l'analyse et l'optimisation des systèmes de communication, des composants RF aux
vastes réseaux, reposent aujourd'hui intrinsèquement sur l'utilisation d'outils informatiques sophistiqués. Ces outils permettent
de modéliser des phénomènes complexes, de simuler des scénarios qui seraient coûteux, longs ou dangereux à tester
physiquement, et d'analyser des quantités massives de données avec une précision inégalée.
Ce cours est conçu pour vous doter des compétences pratiques indispensables à votre future carrière d'ingénieur en
télécommunications. Vous apprendrez non seulement à manipuler ces outils, mais aussi à comprendre les principes sous-
jacents à leur fonctionnement, à interpréter leurs résultats et à les utiliser de manière critique pour prendre des décisions de
conception éclairées.
Objectifs d'apprentissage
• Maîtriser les concepts fondamentaux des outils informatiques dédiés à la conception et à la simulation en
télécommunications.
• Utiliser efficacement des logiciels de simulation pour modéliser, analyser et évaluer les performances des systèmes de
télécommunications.
• Appliquer les outils de conception assistée par ordinateur (CAO) pour la réalisation de schémas et de circuits en
télécommunications.
• Développer des scripts et des programmes simples pour automatiser des tâches de simulation et d'analyse.
• Interpréter les résultats de simulation et les utiliser pour prendre des décisions de conception éclairées.
2
3
• Résoudre des problèmes complexes de télécommunications en s'appuyant sur des approches de modélisation et de
simulation.
Ce cours s'adresse aux étudiants de Licence 2 en Télécommunications ou tout autre domaine connexe souhaitant acquérir
une expertise pratique en simulation et conception assistée par ordinateur.
Pour tirer le meilleur parti de ce cours, les prérequis suivants sont essentiels :
• Connaissances de base en programmation : Une familiarité avec un langage de programmation comme Python ou
C/C++ est attendue. Nous utiliserons Python de manière intensive.
• Mathématiques pour l'ingénieur : Solides bases en Mathématique. Ces concepts sont la pierre angulaire de la
modélisation et de l'analyse des systèmes.
• Principes fondamentaux des télécommunications : Notions de base sur les signaux, les systèmes linéaires, les
modulations numériques (AM, FM, PM, etc.), le traitement du signal (filtrage, etc.) et les concepts de réseaux (modèle
OSI, TCP/IP).
• Notions de base en électronique : Compréhension des circuits RLC, lois de Kirchhoff et des composants électroniques
de base.
Nous vous encourageons fortement à participer activement, à poser des questions et à explorer les fonctionnalités des logiciels
au-delà des exercices proposés. L'autonomie et la curiosité sont des atouts majeurs dans ce domaine.
3
4
Dans le domaine des télécommunications, la complexité des systèmes modernes est telle qu'il est souvent impossible, ou du
moins excessivement coûteux et risqué, de les concevoir et de les tester directement par des prototypes physiques. C'est là
que la simulation intervient comme un outil indispensable.
Imaginez devoir concevoir une nouvelle antenne pour la 5G, capable de gérer des fréquences millimétriques et de multiples
flux de données. Construire des dizaines de prototypes physiques, les tester dans des environnements contrôlés, et ajuster
leur design à chaque itération serait un processus qui prendrait des années et coûterait des millions d'euros. La simulation
permet de réaliser ces itérations virtuellement, en quelques heures ou jours, à une fraction du coût.
Voici les raisons fondamentales pour lesquelles la simulation est devenue un pilier de l'ingénierie en télécommunications :
• Réduction des coûts et des délais de développement : La simulation permet d'identifier et de corriger les erreurs de
conception en amont, avant la phase coûteuse de prototypage matériel. Cela réduit drastiquement les cycles de
développement et les dépenses associées.
• Exploration de scénarios complexes, dangereux ou impossibles à tester physiquement : Comment tester la résilience
d'un réseau face à une catastrophe naturelle majeure ? Ou simuler l'impact d'une interférence massive sur un système
de communication spatial ? La simulation offre un environnement contrôlé pour explorer de tels scénarios sans risque
ni contrainte logistique.
• Validation de concepts et de théories avant la réalisation de prototypes : Avant même de penser à construire, la
simulation permet de valider la faisabilité d'un concept, d'un algorithme ou d'un protocole. On peut tester si une
4
5
nouvelle modulation ou un nouvel algorithme d'allocation de ressources fonctionne comme prévu dans des conditions
idéales ou dégradées.
• Optimisation des performances des systèmes : Les simulateurs intègrent souvent des fonctionnalités d'optimisation qui
permettent de trouver les meilleurs paramètres (dimensions d'une antenne, puissance d'émission, paramètres d'un filtre)
pour atteindre des objectifs de performance spécifiques (maximiser le débit, minimiser le BER, réduire la
consommation).
• Aide à la compréhension et à la débuggage de systèmes complexes : En visualisant des variables internes, des flux de
données ou des champs électromagnétiques que l'on ne peut pas mesurer directement dans un système physique, la
simulation offre une fenêtre sur le comportement intime du système. Cela facilite l'identification des goulots
d'étranglement ou des sources de problèmes.
1.1.2. La place des outils dans le cycle de vie de l'ingénieur télécom
Les outils informatiques sont omniprésents à chaque étape du cycle de vie d'un produit ou système de télécommunication :
• Recherche et Développement (R&D) : Les chercheurs utilisent des plateformes de programmation scientifique (Python,
MATLAB) pour implémenter de nouveaux algorithmes (traitement du signal, codage, IA pour les réseaux), des
simulateurs de systèmes (Simulink, NS-3) pour tester de nouveaux protocoles ou architectures, et des outils EM (HFSS)
pour explorer des concepts d'antennes ou de composants.
• Spécification et Conception : Les ingénieurs définissent les exigences et élaborent l'architecture du système. Les outils
CAO sont utilisés pour les schémas de principe, les analyses de performances préliminaires et la validation des choix
technologiques.
• Modélisation et Simulation détaillée : C'est l'étape où le système est représenté virtuellement. Les outils de simulation
sont utilisés pour des analyses approfondies des performances sous diverses conditions, l'identification des points faibles
et l'optimisation des paramètres.
5
6
• Prototypage Virtuel et Prototypage Physique : La simulation permet de créer des "prototypes virtuels" avant de passer
à la fabrication de prototypes physiques, réduisant ainsi les coûts et les erreurs. Les résultats de simulation guident la
fabrication.
• Test et Validation : Les simulateurs peuvent générer des scénarios de test complexes et des données de référence pour
valider le comportement du système physique. On compare souvent les résultats expérimentaux aux résultats de
simulation pour valider la conception.
• Déploiement et Maintenance : Des outils de simulation peuvent être utilisés pour planifier le déploiement de réseaux
(dimensionnement, placement d'antennes) et pour diagnostiquer des problèmes en modélisant des pannes ou des
scénarios de surcharge.
1.1.3. L'impact sur l'innovation et la compétitivité dans l'industrie
L'adoption et la maîtrise des outils informatiques sont des facteurs clés de succès pour les entreprises du secteur des
télécommunications. Elles permettent :
• Une accélération de l'innovation : En réduisant les cycles de conception et de test, les entreprises peuvent innover plus
rapidement et mettre de nouveaux produits sur le marché en un temps record.
• Une amélioration de la qualité et des performances : Les simulations permettent d'optimiser les systèmes pour atteindre
des niveaux de performance élevés et une robustesse accrue face aux contraintes du monde réel.
• Une réduction des risques financiers : En validant les concepts et en identifiant les problèmes tôt dans le processus, les
entreprises minimisent les risques d'investissements coûteux dans des solutions non viables.
• Un avantage concurrentiel : Les entreprises capables de concevoir, simuler et valider rapidement des solutions
complexes sont plus agiles et réactives face aux demandes du marché et aux évolutions technologiques.
6
7
Pour l'ingénieur, la maîtrise de ces outils est donc non seulement une compétence technique, mais aussi une compétence
stratégique essentielle pour contribuer à l'innovation et à la compétitivité de son organisation.
o Consigne : Pour chacun des scénarios suivants, discutez en quoi la simulation est un outil indispensable et quels
types de problématiques elle permettrait de résoudre.
1. Conception d'un système de communication par satellite : Comment simuler l'impact du délai de
propagation, de la perte de trajet dans l'espace, et des interférences entre plusieurs satellites ?
2. Développement d'une nouvelle technologie 5G pour véhicules autonomes (V2X) : Comment simuler la
communication entre véhicules à haute vitesse dans des environnements urbains denses, avec des
contraintes de latence ultra-faible ?
3. Optimisation d'un réseau de capteurs sans fil pour l'agriculture connectée (IoT) : Comment déterminer le
placement optimal des capteurs, la durée de vie des batteries, et l'efficacité de la collecte de données sur
une grande exploitation agricole ?
4. Analyse de la sécurité d'un réseau d'entreprise face à une cyberattaque : Comment simuler des scénarios
d'attaques DDoS ou de propagation de malwares pour évaluer la résilience du réseau et l'efficacité des
contremesures ?
Le paysage des outils informatiques en télécommunications est vaste et diversifié. On peut les classer en plusieurs grandes
catégories, chacune répondant à des besoins spécifiques du processus de conception et de simulation.
7
8
8
9
Ces outils sont axés sur la modélisation mathématique et l'analyse fonctionnelle des systèmes de communication et des
algorithmes de traitement du signal.
Ces outils permettent de modéliser le comportement des réseaux de communication, des interactions entre les nœuds aux
performances des protocoles.
10
11
Ces outils sont transversaux et essentiels pour donner un sens aux données générées par toutes les simulations.
• Description : Logiciels et bibliothèques permettant de créer des graphiques (courbes, histogrammes, boîtes à
moustaches, cartes de chaleur) et des tableaux pour synthétiser, comparer et interpréter les résultats de simulation.
• Exemples : Matplotlib (Python), Seaborn (Python), Tableau, Power BI, les outils d'analyse de données intégrés à
MATLAB ou OPNET.
• Application en télécom : Tracé des courbes de TEB vs. SNR, visualisation de la distribution des délais de paquets,
comparaison des débits obtenus sous différentes conditions réseau.
• Exercice : Identifier l'outil approprié
o Consigne : Pour chaque tâche d'ingénierie télécom suivante, proposez le type d'outil (CAO RF, Simulateur
système, Simulateur réseau, etc.) et un ou deux exemples de logiciels qui seraient les plus adaptés, en justifiant
brièvement votre choix.
1. Évaluer le taux d'erreur binaire (BER) d'un système de communication utilisant la modulation 64-QAM en
présence de bruit et d'interférences.
2. Tester la configuration d'un routeur Cisco en utilisant des images logicielles réelles avant de le déployer
en production.
3. Développer et optimiser un nouvel algorithme de codage canal (ex: codes polaires) pour les futures
générations de communication.
11
12
4. Simuler le cheminement des paquets et la charge des routeurs dans un réseau d'entreprise impliquant des
VLANs et des protocoles de routage OSPF.
Pour vous donner un aperçu concret, examinons rapidement les interfaces typiques de quelques-uns des logiciels que nous
aborderons dans ce cours.
(Ici, dans un vrai support, il y aurait des captures d'écran annotées pour chaque logiciel. Je vais les décrire.)
• MATLAB :
o Description : Interface textuelle principale (Command Window) où l'on tape des commandes. Un espace de
travail (Workspace) pour visualiser les variables. Un éditeur de scripts (Editor) pour écrire et sauvegarder du
code. Un explorateur de fichiers (Current Folder).
o Intérêt : Environnement puissant pour le calcul numérique, l'analyse de données et la programmation de
fonctions.
o (Description de capture d'écran : fenêtre avec la Command Window en bas, le Workspace à droite, l'Editor au
centre avec un script simple comme plot(sin(0:0.1:10)).)
• Simulink :
o Description : Interface graphique de modélisation par blocs. Une zone de travail où l'on glisse-dépose des blocs
depuis une bibliothèque (Library Browser). Chaque bloc représente une fonction mathématique ou un
composant de système. Les blocs sont connectés par des lignes représentant les signaux.
12
13
o Intérêt : Idéal pour modéliser des systèmes complexes de manière intuitive, sans écrire beaucoup de code, et
pour simuler des phénomènes dynamiques.
o (Description de capture d'écran : un modèle Simulink simple avec un bloc "Sine Wave", un "Gain", et un "Scope"
connectés, et la fenêtre Library Browser ouverte.)
• Ansys HFSS :
o Description : Interface 3D pour la modélisation électromagnétique. Un arbre de projet (Project Manager) qui
liste les objets (géométries, matériaux, excitations, analyses). Une fenêtre de visualisation 3D où l'on construit
13
14
l'objet et visualise les champs. Des fenêtres de résultats pour les tracés (paramètres S, diagrammes de
rayonnement).
o Intérêt : Indispensable pour la conception de composants RF/Hyperfréquences et antennes où la forme physique
impacte directement la performance électromagnétique.
o (Description de capture d'écran : vue 3D d'une antenne patch, avec l'arbre de projet listant les couches de
matériaux, les ports d'excitation et les conditions aux limites.)
14
15
15
16
La simulation n'est pas un acte unique, mais un processus itératif qui suit une méthodologie rigoureuse pour garantir la validité
et la pertinence des résultats.
16
17
o Une fois la simulation terminée, il est crucial d'extraire, de visualiser et d'interpréter les données. Cela implique
souvent des techniques statistiques (moyenne, variance, intervalles de confiance) et des outils de visualisation
(courbes, histogrammes) pour donner un sens aux chiffres bruts et en déduire des conclusions sur les
performances du système.
• Optimisation : Améliorer les performances
o Les résultats de simulation peuvent être utilisés pour ajuster les paramètres du système afin d'atteindre les objectifs
de performance. Certains outils intègrent des algorithmes d'optimisation pour automatiser ce processus.
17
18
La simulation et l'émulation de réseaux sont des techniques fondamentales pour analyser, concevoir et évaluer les
performances de systèmes de communication complexes avant leur déploiement physique. Elles permettent de tester
différentes architectures, protocoles, configurations de trafic et conditions de panne de manière contrôlée et reproductible.
Les deux approches offrent des avantages considérables par rapport aux déploiements réels :
• Coût et Complexité Réduits : Déployer un réseau physique à grande échelle ou un nouveau protocole pour des tests
peut être extrêmement coûteux et complexe. La simulation et l'émulation permettent de tester ces scénarios à une
fraction du coût.
• Contrôle Total de l'Environnement : En simulation/émulation, vous avez un contrôle précis sur tous les paramètres :
nombre d'utilisateurs, type de trafic, caractéristiques du canal, pannes, etc. Cela garantit une reproductibilité des
expériences et permet d'isoler l'impact de chaque variable.
• Scénarios Difficiles à Réaliser en Réel : Certains scénarios (par exemple, des centaines de milliers d'utilisateurs simultanés,
des pannes massives, des conditions de propagation extrêmes) sont impossibles ou trop dangereux à reproduire en
environnement réel. La simulation/émulation les rend possibles.
• Gain de Temps : Les simulations peuvent être exécutées beaucoup plus rapidement que les expérimentations réelles, et
elles peuvent être accélérées (temps logique vs. temps réel) pour évaluer des performances sur de longues périodes.
• Analyse Détaillée : Les outils fournissent des métriques très détaillées sur le comportement du réseau (débit, délai, perte
de paquets, utilisation des ressources) à tous les niveaux, ce qui est difficile à obtenir avec des mesures physiques.
• Exploration de Nouvelles Architectures : Avant d'investir dans le développement matériel, ces techniques permettent
de valider des concepts et de prouver la faisabilité de nouvelles architectures réseau ou de nouveaux protocoles.
18
19
Limites Communes :
• Précision du Modèle : Le réalisme des résultats dépend directement de la fidélité du modèle ou de l'émulation à la
réalité.
• Temps et Ressources : Pour des réseaux très grands ou des simulations/émulations très détaillées, le temps de calcul et
les ressources nécessaires (CPU, RAM) peuvent devenir très importants.
• Expertise Requise : Concevoir des modèles précis, configurer des émulations réalistes et analyser les résultats de manière
pertinente demande une expertise des outils et des concepts de réseau.
Il est crucial de distinguer ces deux approches, bien qu'elles soient souvent utilisées de manière complémentaire.
19
20
o Principe : L'émulation vise à reproduire le comportement d'un réseau réel, souvent en utilisant de vrais logiciels
ou systèmes d'exploitation réseau (comme Cisco IOS, Linux) sur des machines virtuelles, et en les connectant
via des interfaces virtuelles qui peuvent simuler des caractéristiques de lien (délai, perte de paquets, bande
passante). Le temps s'écoule en temps réel.
o Avantages : Permet de tester de vraies applications et protocoles réseaux réels sur une infrastructure virtuelle.
Idéal pour la formation, la validation de configurations spécifiques et l'intégration de logiciels.
o Limites : Plus gourmande en ressources informatiques que la simulation pure. Difficile de simuler de très grands
réseaux ou de très longues durées de trafic à cause de la contrainte du temps réel.
o Exemples : GNS3, Cisco Packet Tracer, EVE-NG, mininet.
• Simulateurs Basés sur des Équations (Equation-Based Simulators) :
o Principe : Ils utilisent des équations mathématiques (souvent des équations différentielles) pour modéliser le
comportement moyen du système sur de courtes périodes. Ne modélisent pas les événements individuels.
o Avantages : Très rapides pour estimer des performances moyennes sur des réseaux de très grande taille.
o Limites : Ne peuvent pas capturer les détails au niveau du paquet ou les comportements transitoires.
o Exemples : Certains outils de planification de réseau ou de dimensionnement.
Lors d'une simulation ou émulation de réseau, l'objectif est de quantifier l'efficacité et la robustesse du système. Voici les
métriques les plus courantes :
• Débit (Throughput) :
20
21
o Définition : Le volume de données (bits ou paquets) transférées avec succès par unité de temps à travers un
segment de réseau ou un système.
o Unité : bits/seconde (bps), Kbps, Mbps, Gbps.
o Pertinence : Indique la capacité du réseau à acheminer de l'information. Un débit élevé est généralement
souhaitable.
• Délai / Latence (Delay / Latency) :
o Définition : Le temps écoulé entre le moment où un paquet est envoyé par la source et le moment où il est reçu
par la destination. Peut inclure le délai de propagation, de file d'attente, de traitement, et de transmission.
o Unité : Secondes (s), millisecondes (ms).
o Pertinence : Crucial pour les applications en temps réel (voix, vidéo, jeux en ligne). Un faible délai est essentiel.
• Jitter :
o Définition : La variation du délai de paquets successifs.
o Unité : Secondes (s), millisecondes (ms).
o Pertinence : Affecte la qualité des applications multimédias en temps réel. Un faible jitter est essentiel pour un
rendu fluide.
• Taux de Perte de Paquets (Packet Loss Rate - PLR) :
o Définition : Le pourcentage de paquets envoyés qui n'atteignent jamais leur destination.
o Unité : Pourcentage (%).
o Pertinence : Indique la fiabilité du réseau. Des pertes élevées affectent la qualité de service et nécessitent des
retransmissions, réduisant le débit effectif.
• Utilisation des Ressources (Resource Utilization) :
o Définition : Le pourcentage d'une ressource (bande passante, capacité du processeur d'un routeur, mémoire
tampon) qui est utilisée.
o Unité : Pourcentage (%).
o Pertinence : Une utilisation trop faible indique un gaspillage de ressources ; une utilisation trop élevée peut
entraîner de la congestion et des dégradations de performance.
• Énergie Consommée (Energy Consumption) :
21
22
o Définition : La quantité d'énergie consommée par les équipements réseau pour acheminer le trafic.
o Unité : Joules (J), Watts (W).
o Pertinence : De plus en plus important pour l'ingénierie des réseaux verts et durables.
Pour simuler ou émuler des réseaux, il est essentiel de modéliser le comportement des utilisateurs et des applications générant
du trafic.
Les modèles de trafic réseau décrivent la manière dont les données sont générées et injectées dans le réseau.
22
23
o Implémentation : Utilisation de distributions lourdes (par exemple, Pareto) pour modéliser les durées des
périodes ON et OFF, ou des modèles fractals.
• Modèles ON-OFF :
o Principe : Un générateur de trafic alterne entre un état "ON" (générant du trafic) et un état "OFF" (silencieux).
Les durées des états ON et OFF peuvent suivre différentes distributions (exponentielle, Pareto, etc.).
o Application : Très flexible pour modéliser des sources de trafic hétérogènes (voix, vidéo, transfert de fichiers).
o Implémentation : Utiliser des générateurs de nombres aléatoires pour les durées ON/OFF.
Les outils de simulation (ns-3, OMNeT++) offrent des modules de génération de trafic. Dans les émulateurs comme GNS3
ou Packet Tracer, on peut configurer des applications réelles (par exemple, un client FTP, un serveur HTTP) sur des machines
virtuelles pour générer du trafic, ou utiliser des outils de test de performance comme iperf.
La QoS fait référence à la capacité d'un réseau à fournir un service garanti ou différencié à différents types de trafic.
• Concepts de QoS :
o Bande passante garantie : Réserver une certaine capacité pour un flux.
o Délai maximal : Assurer que les paquets arrivent avant un certain seuil.
o Priorité : Traiter certains paquets avant d'autres.
o Fiabilité : Minimiser les pertes de paquets.
• Classes de Trafic :
o Le trafic est souvent classifié en différentes catégories selon ses exigences QoS :
23
24
▪ Trafic temps réel (Real-time traffic) : Voix sur IP (VoIP), Vidéo Conférence. Sensible au délai et au jitter,
mais peut tolérer de petites pertes.
▪ Trafic interactif (Interactive traffic) : Navigation web, SSH. Sensible au délai de réponse.
▪ Trafic de données (Data traffic) : Transfert de fichiers (FTP), e-mail. Moins sensible au délai, mais exige
une livraison fiable (faible perte).
• Mécanismes de QoS en simulation/émulation :
o File d'attente (Queuing) :
▪ FIFO (First In, First Out) : Le plus simple, les paquets sont traités dans l'ordre d'arrivée.
▪ Priorité (Priority Queuing) : Les paquets de haute priorité sont traités avant les autres.
▪ File d'attente pondérée équitable (Weighted Fair Queuing - WFQ) : Partage équitablement la bande
passante entre les flux, avec une pondération pour les priorités.
o Mise en forme du trafic (Traffic Shaping) et Régulation (Policing) : Pour lisser les rafales de trafic ou limiter le
débit d'un flux.
o Admission Control (Contrôle d'admission) : Décider si un nouveau flux peut être accepté sans dégrader la QoS
des flux existants.
2.3. OUTILS DE SIMULATION ET D'ÉMULATION DE RESEAUX
Cette section explore des outils clés, allant des simulateurs à événements discrets aux émulateurs de réseau, et enfin aux outils
de planification spécifiques.
24
25
• ns-3 :
o Présentation : Un simulateur de réseau discret à événements, open-source et basé sur C++ (avec des bindings
Python). Très utilisé pour la recherche en IP, sans fil (Wi-Fi, LTE, 5G).
o Architecture : Repose sur des Nœuds (dispositifs), des Applications (génératrices de trafic), des Modèles de
protocole (piles TCP/IP, MAC, PHY), des Canaux (modélisant le médium) et des NetDevices (interfaces).
o Philosophie : Avance par événements discrets, avec un ordonnanceur de temps. Permet une collecte de traces et
des statistiques agrégées pour une analyse fine.
o (Pas de code réel ici, l'accent est mis sur la compréhension du workflow et de l'architecture.)
25
26
• OMNeT++ :
o Présentation : Un framework de simulation modulaire, extensible et basé sur des composants, écrit en C++. Plus
généraliste que ns-3, mais très populaire pour les réseaux via le INET Framework.
o Architecture : Utilise des Modules (blocs de construction écrits en C++ et décrits en NED), des Canaux
(connectant les modules et modélisant les propriétés de transmission), et des Messages (paquets, événements)
qui circulent.
o Philosophie : Basé sur des événements discrets, avec un fort accent sur les composants réutilisables. Son IDE (basé
sur Eclipse) offre une visualisation interactive de la simulation, très utile pour le débogage.
o (Pas de code réel ici.)
26
27
Ces outils permettent une approche plus pratique en utilisant des images de systèmes d'exploitation réseau réels.
• GNS3 (Graphical Network Simulator-3) :
27
28
o Présentation : Un émulateur de réseau open-source qui permet de simuler des réseaux complexes en utilisant
de vraies images de systèmes d'exploitation réseau (comme Cisco IOS, Juniper Junos, ou des machines
virtuelles Linux/Windows) exécutées sur des hyperviseurs (VirtualBox, VMware, Qemu).
o Fonctionnalités clés :
▪ Topologie graphique : Drag-and-drop d'équipements (routeurs, switches, PC, pare-feux).
▪ Interconnexion : Connexion des équipements par des liens virtuels configurables (débit, délai, perte).
▪ Intégration : Possibilité de connecter la topologie émulée au réseau physique réel.
▪ Capture de paquets : Intégration avec Wireshark pour analyser le trafic.
o Avantages : Permet de pratiquer avec des commandes réelles et de tester des configurations complexes avant
le déploiement. Idéal pour la certification (Cisco, Juniper).
o Limites : Gourmand en ressources (CPU, RAM). La taille du réseau émulé est limitée par la puissance de la
machine hôte. Ne gère pas toujours bien la couche physique sans fil.
28
29
29
30
▪ Mode Simulation : Permet de visualiser le parcours des paquets étape par étape à travers le réseau, avec
des informations détaillées sur chaque couche du modèle OSI.
▪ Activités prédéfinies : Contient de nombreux exercices et tutoriels pour l'apprentissage.
▪ Emulation simplifiée : Reproduit fidèlement le comportement des commandes Cisco IOS.
o Avantages : Très léger et facile à utiliser, ne nécessitant pas de ressources importantes. Excellent pour
l'apprentissage des concepts réseau Cisco.
o Limites : Non basé sur de vrais OS, donc moins flexible pour les comportements non-Cisco ou les
implémentations avancées de protocoles. Ne simule pas tous les aspects des réseaux complexes (performance à
grande échelle, fading détaillé).
30
31
TP : Construction et configuration d'un réseau simple avec Packet Tracer (ou GNS3 conceptuel)
Objectif : Se familiariser avec un émulateur réseau et configurer des équipements.
1. Avec Cisco Packet Tracer (TP pratique) :
o Scénario : Configurez un réseau simple composé de deux PC et d'un routeur Cisco, connectés par des liens
Ethernet.
o Configuration :
▪ Attribuez des adresses IP aux PC et aux interfaces du routeur.
▪ Configurez une route statique sur le routeur pour permettre la communication entre les sous-réseaux des
PC.
o Vérification : Utilisez les commandes ping et traceroute depuis les PC pour vérifier la connectivité.
o Observation du trafic : Passez en "mode Simulation" et envoyez un ping. Observez le cheminement du paquet
à travers les différentes couches OSI à chaque équipement.
o Ajouter des fonctionnalités (optionnel) : Si le temps le permet, ajoutez un switch, configurez des VLANs, ou un
service DHCP/DNS.
2. Avec GNS3 (Approche conceptuelle si pas d'installation pratique) :
o Décrivez les étapes similaires à celles du Packet Tracer pour configurer le même scénario.
o Mettez en évidence les différences clés (utilisation de vraies images d'OS, complexité d'installation, capacité à
émuler plus de protocoles).
o Expliquez comment vous vérifieriez la connectivité et observeriez le trafic (ex: show ip route sur le routeur
virtuel, capture Wireshark).
31
32
Ces outils se distinguent par leur rôle dans la conception et l'optimisation de déploiements réels.
• Atoll (Forsk) :
o Présentation : Un logiciel de planification radiofréquence (RF) de pointe, principalement utilisé pour la
conception, le dimensionnement et l'optimisation des réseaux cellulaires (2G, 3G, 4G, 5G, IoT). Ce n'est pas un
simulateur d'événements discrets, mais un outil de planification basé sur des modèles de propagation et des
algorithmes d'optimisation.
o Fonctionnalités clés :
▪ Modèles de propagation : Intègre des modèles précis (Okumura-Hata, Cost 231, etc.) pour prédire la
couverture et les interférences.
▪ Cartographie : S'appuie sur des données géographiques (terrains, bâtiments) pour des prédictions réalistes.
▪ Dimensionnement : Aide à déterminer le nombre optimal de sites, leur emplacement et leur configuration
pour atteindre des objectifs de couverture et de capacité.
▪ Analyse de performance : Évalue le SINR, le débit théorique par cellule, la charge, les interférences.
▪ Optimisation : Permet d'optimiser les paramètres des cellules (puissance, tilt, azimuth) pour maximiser la
performance et minimiser les interférences.
o Avantages : Indispensable pour les opérateurs de réseaux mobiles. Permet de prendre des décisions
d'investissement majeures basées sur des prédictions détaillées.
o Limites : Très spécifique aux réseaux cellulaires. Ne simule pas le trafic au niveau paquet ni les interactions
complexes de protocoles. Coût élevé.
32
33
33
34
Objectif : Distinguer les domaines d'application spécifiques des outils de planification et de simulation hardware.
1. Scénario de déploiement 5G :
o Un opérateur de téléphonie mobile souhaite déployer un réseau 4G dans une nouvelle ville.
o Expliquez comment Atoll serait utilisé pour ce projet. Quels types de questions cet outil aiderait-il à répondre ?
(Ex: Où placer les antennes ? Quelle puissance utiliser ? Quelle sera la couverture ? Quels débits espérés pour les
utilisateurs ?).
2. Développement d'un module IoT :
o Une entreprise développe un nouveau capteur IoT qui doit communiquer sans fil.
o Expliquez comment Proteus serait utilisé dans le processus de développement de ce capteur. Quels aspects du
module de communication le logiciel permettrait-il de simuler avant la fabrication du prototype ? (Ex:
Fonctionnement du microcontrôleur, interface avec le module radio, consommation d'énergie du circuit de
communication).
34
35
35
36
Python est devenu le langage de prédilection pour le calcul scientifique et l'analyse de données dans de nombreux domaines
de l'ingénierie, y compris les télécommunications. Sa simplicité de syntaxe, sa vaste collection de bibliothèques et sa
communauté active en font un outil extrêmement puissant pour la modélisation, la simulation et le traitement du signal. Ce
module vous guidera à travers les bases de Python nécessaires pour l'ingénieur télécom.
Pour démarrer avec Python dans un contexte scientifique, nous allons utiliser la distribution Anaconda. Anaconda est une
plateforme open-source qui simplifie la gestion des environnements Python et l'installation des bibliothèques scientifiques les
plus utilisées.
Installation d'Anaconda :
36
37
(Description de Capture d'écran : Un Jupyter Notebook avec une cellule Markdown en titre, une cellule de code simple et
sa sortie, et une cellule Markdown en dessous.)
37
38
Avant de plonger dans les bibliothèques scientifiques, révisons quelques concepts fondamentaux de Python. Si vous êtes déjà
familier avec un autre langage de programmation, la syntaxe de Python est généralement très intuitive.
38
39
Python
# Nombres entiers (integers)
age = 30
print(type(age)) # <class 'int'>
# Booléens (Booleans)
est_valide = True
print(type(est_valide)) # <class 'bool'>
Opérateurs :
39
40
y=3
print(f"x + y = {x + y}")
print(f"x / y = {x / y}") # 3.333...
print(f"x // y = {x // y}") # 3
print(f"x == 10 and y < 5 is {x == 10 and y < 5}")
Structures de Données Séquentielles :
• Listes (list) : Collections ordonnées, mutables (modifiables). Définies par des crochets [].
Python
frequences = [900e6, 1.8e9, 2.4e9]
print(frequences[0]) # Accès par index : 900000000.0
[Link](5e9) # Ajouter un élément
print(frequences) # [900000000.0, 1800000000.0, 2400000000.0, 5000000000.0]
• Tuples (tuple) : Collections ordonnées, immuables (non modifiables). Définies par des parenthèses ().
Python
coordonnees = (48.8566, 2.3522) # (latitude, longitude)
# coordonnees[0] = 45 # Erreur : les tuples sont immuables
• Dictionnaires (dict) : Collections non ordonnées de paires clé-valeur. Définies par des accolades {}.
Python
parametres_radio = {"frequence": 2.4e9, "puissance_dbm": 20, "modulation": "QPSK"}
40
41
print(parametres_radio["frequence"]) # 2400000000.0
parametres_radio["debit_mbps"] = 54 # Ajouter une nouvelle paire
print(parametres_radio)
• Ensembles (set) : Collections non ordonnées d'éléments uniques. Définies par des accolades {}.
Python
technologies = {"4G", "5G", "LTE", "5G"}
print(technologies) # {'4G', '5G', 'LTE'} (le doublon est supprimé)
Structures de Contrôle :
• Conditionnelles (if/elif/else) :
Python
snr_db = 15
41
42
• Boucles while : Pour répéter des instructions tant qu'une condition est vraie.
Python
erreurs = 0
max_erreurs = 10
while erreurs < max_erreurs:
# Simuler la transmission d'un bit et vérifier l'erreur
# ... (code de simulation)
if (erreurs % 2) == 0: # Exemple simple de décompte d'erreurs
erreurs += 1
print(f"Erreurs cumulées : {erreurs}")
42
43
Python
def calculer_snr_lineaire(snr_db):
"""
Convertit un SNR en dB en SNR linéaire.
"""
return 10**(snr_db / 10)
def calculer_puissance_en_dbm(puissance_watts):
"""
Convertit une puissance en Watts en dBm.
"""
return 10 * (math.log10(puissance_watts / 0.001)) # 0.001 Watts = 1 mW
snr_db_val = 10
snr_lineaire_val = calculer_snr_lineaire(snr_db_val)
43
44
puissance_w = 0.050 # 50 mW
puissance_dbm = calculer_puissance_en_dbm(puissance_w)
print(f"Une puissance de {puissance_w} W correspond à {puissance_dbm:.2f} dBm.")
Objectif : Se familiariser avec l'environnement Jupyter Notebook et renforcer les bases de la programmation Python à travers
des calculs simples en télécommunications.
1. Lancer Jupyter Notebook : Lancez Jupyter Notebook via Anaconda Navigator ou la ligne de commande.
2. Créer un nouveau notebook : Créez un nouveau notebook Python (ex: TD2_1_1_BasesPython.ipynb).
3. Cellule de Markdown : Créez une cellule Markdown en haut du notebook avec le titre du TD et votre nom.
4. Calculateur de Longueur d'Onde :
o Dans une cellule de code, définissez une fonction calculer_longueur_onde(frequence_hz).
o Cette fonction prend une fréquence en Hertz et retourne la longueur d'onde en mètres, sachant que la vitesse
de la lumière (c) est d'environ 3×108 m/s.
o Testez votre fonction avec différentes fréquences (ex: 900 MHz, 2.4 GHz, 5 GHz). Affichez les résultats.
5. Calculateur de Perte en Espace Libre (Free Space Path Loss - FSPL) :
o Définissez une fonction calculer_fspl_db(frequence_hz, distance_km) qui retourne la perte en dB. La formule est
: FSPL(dB)=20log10(d)+20log10(f)+32.44 où d est la distance en km et f est la fréquence en MHz.
o Testez la fonction pour :
▪ f=2.4 GHz, d=1 km
44
45
NumPy (Numerical Python) est la bibliothèque fondamentale pour le calcul scientifique avec Python. Elle fournit un objet
tableau N-dimensionnel (ndarray) et des outils pour travailler avec ces tableaux. Les opérations NumPy sont beaucoup plus
rapides que les boucles Python standard, ce qui est crucial pour la simulation.
Un ndarray est une grille de valeurs de même type, indexées par des tuples d'entiers. Les tableaux NumPy sont la base pour
représenter des signaux, des matrices, des images, etc.
Python
import numpy as np # Convention pour importer NumPy
liste_donnees = [1, 2, 3, 4, 5]
tableau_simple = [Link](liste_donnees)
print(tableau_simple)
print(type(tableau_simple)) # <class '[Link]'>
45
46
Python
zeros_vec = [Link](10) # Vecteur de 10 zéros
print(zeros_vec)
• Séquences numériques :
Python
# [Link](début, fin, pas) - comme range(), mais retourne un ndarray
sequence_entiers = [Link](0, 10, 2) # 0, 2, 4, 6, 8
print(sequence_entiers)
• Tableaux aléatoires :
46
47
Python
# Nombres aléatoires uniformément distribués entre 0 et 1
random_uniform = [Link](5)
print(random_uniform)
Les opérations arithmétiques standards s'appliquent élément par élément sur les ndarray. C'est l'une des forces de NumPy :
plus besoin de boucles explicites pour de nombreuses opérations.
Python
a = [Link]([1, 2, 3])
b = [Link]([4, 5, 6])
47
48
print(f"Addition : {a + b}") # [5 7 9]
print(f"Multiplication : {a * b}") # [4 10 18]
print(f"Carré de a : {a**2}") # [1 4 9]
print(f"Inverse de a : {1 / a}") # [1. 0.5 0.33333333]
Python
matrice1 = [Link]([[1, 2], [3, 4]])
matrice2 = [Link]([[5, 6], [7, 8]])
Python
48
49
print(f"Original :\n{matrice}")
print(f"Transposée :\n{matrice.T}")
• Fonctions mathématiques universelles (ufuncs) : NumPy fournit des fonctions optimisées qui s'appliquent élément par
élément.
Python
angles_rad = [Link](0, 2 * [Link], 5)
print(f"Sinus : {[Link](angles_rad)}")
print(f"Exponentielle : {[Link](angles_rad)}")
print(f"Logarithme naturel : {[Link]([Link]([1, np.e]))}")
Accéder à des éléments ou des sous-tableaux est très similaire aux listes Python, mais avec plus de fonctionnalités pour les
dimensions multiples.
• Indexation simple :
Python
data = [Link]([10, 20, 30, 40, 50])
print(data[0]) # Premier élément : 10
49
50
Python
print(data[1:4]) # Éléments de l'index 1 à 3 (4 exclu) : [20 30 40]
print(data[:3]) # Du début jusqu'à l'index 2 : [10 20 30]
print(data[2:]) # De l'index 2 jusqu'à la fin : [30 40 50]
print(data[::2]) # Tous les deux éléments : [10 30 50]
• Indexation multidimensionnelle :
Python
mat = [Link]([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(mat[0, 0]) # Premier élément : 1
print(mat[1, 2]) # Élément à la ligne 1, colonne 2 : 6
print(mat[0, :]) # Première ligne : [1 2 3]
print(mat[:, 1]) # Deuxième colonne : [2 5 8]
print(mat[0:2, 1:3]) # Sous-matrice : [[2 3], [5 6]]
Python
signaux = [Link]([-0.5, 0.2, 1.1, -0.8, 0.6])
50
51
Diffusion (broadcasting) :
C'est une fonctionnalité puissante qui permet à NumPy d'effectuer des opérations entre des tableaux de formes différentes.
NumPy "étend" conceptuellement le tableau plus petit pour qu'il ait la même forme que le tableau plus grand.
Python
a = [Link]([1, 2, 3]) # Forme (3,)
b=5 # Scalaire (forme vide)
print(matrix + row_vector)
# NumPy étend row_vector à [[10, 20, 30], [10, 20, 30]] :
# [[11 22 33]
# [14 25 36]]
51
52
Les règles de broadcasting peuvent être subtiles, mais elles sont très efficaces.
TD : NumPy pour la manipulation de signaux
Objectif : Appliquer NumPy pour la génération et la manipulation de signaux numériques, incluant l'ajout de bruit et le calcul
de métriques clés.
1. Génération d'un Signal Sinusoïdal :
o Générez un vecteur temps t de 0 à 1 seconde avec 1000 points. (Utilisez [Link]).
o Créez un signal sinusoïdal signal_sin de fréquence 50 Hz et amplitude 1. (Utilisez [Link]).
o Tracez ce signal en fonction du temps. (Utilisez [Link] - voir section 2.1.4 si besoin).
2. Ajout de Bruit Gaussien :
o Générez un bruit blanc gaussien de moyenne 0 et variance 0.1, de la même longueur que signal_sin. (Utilisez
[Link]).
o Ajoutez ce bruit au signal sinusoïdal pour obtenir un signal bruité signal_bruit.
o Tracez le signal bruité sur le même graphique que le signal original (avec des couleurs différentes et une légende).
3. Calcul du Rapport Signal sur Bruit (SNR) :
o Calculez la puissance moyenne du signal signal_sin (variance). Psignal=N1∑i=0N−1signal[i]2. (Utilisez [Link]
ou [Link] si la moyenne est 0).
o Calculez la puissance moyenne du bruit. Pbruit=N1∑i=0N−1bruit[i]2.
o Calculez le SNR linéaire (SNRlin=Psignal/Pbruit).
o Convertissez le SNR linéaire en dB (SNRdB=10log10(SNRlin)).
52
53
I et Q prennent les valeurs ±1/2 . (Utilisez [Link] pour générer les bits, puis mappez-les en
symboles I et Q).
o Visualisez la constellation QPSK résultante en traçant les points (I, Q) sur un graphique en nuage de points.
o Ajoutez un bruit gaussien complexe (bruit réel sur I et bruit réel sur Q) aux symboles. Visualisez la constellation
bruitée.
SciPy (Scientific Python) est une collection de modules Python open-source pour les mathématiques, la science et l'ingénierie.
Il est construit sur NumPy et fournit des fonctionnalités plus avancées dans des domaines comme l'optimisation, l'intégration,
l'algèbre linéaire, le traitement du signal, le traitement d'images, et les statistiques.
Nous nous concentrerons sur les modules les plus pertinents pour les télécommunications : [Link], [Link], et [Link].
Ce module contient des outils pour le traitement du signal, incluant la conception de filtres, la convolution, la corrélation, et
diverses transformations.
• Filtrage numérique :
Python
from scipy import signal
53
54
# Application du filtre
signal_filtre = [Link](b, a, signal_bruit)
[Link](figsize=(10, 6))
[Link](t, signal_bruit, label='Signal Bruité')
[Link](t, signal_filtre, label='Signal Filtré', color='red', linewidth=2)
54
55
Explication : L'exemple ci-dessus montre comment concevoir un filtre Butterworth et l'appliquer à un signal. [Link]
calcule les coefficients du numérateur (b) et du dénominateur (a) du filtre. [Link] applique le filtre.
• Convolution : L'opération de convolution est fondamentale en traitement du signal (réponse impulsionnelle d'un
système).
Python
impulsion = [Link]([1, 0, 0, 0])
reponse_impulsionnelle = [Link]([0.5, 0.25, 0.125])
sortie_convoluee = [Link](impulsion, reponse_impulsionnelle)
print(f"Sortie convoluée : {sortie_convoluee}")
La FFT est un algorithme rapide pour calculer la transformée de Fourier discrète (DFT). Elle est essentielle pour l'analyse
spectrale des signaux.
55
56
Python
from [Link] import fft, fftfreq
# Paramètres du signal
fe = 1000 # Fréquence d'échantillonnage (Hz)
T = 1 / fe # Période d'échantillonnage
N = 1000 # Nombre de points
t = [Link](0.0, N*T, N, endpoint=False) # Vecteur temps
# Calcul de la FFT
yf = fft(signal_test)
xf = fftfreq(N, T)[:N//2] # Calcul des fréquences, ne prendre que la partie positive
[Link]('Fréquence (Hz)')
[Link]('Amplitude')
[Link](True)
[Link]()
Explication : Nous générons un signal composé de deux fréquences, puis nous calculons sa FFT. fftfreq nous donne les
fréquences correspondantes aux bins de la FFT. Nous affichons la magnitude de la FFT pour visualiser le spectre d'amplitude,
en ne prenant que la moitié positive du spectre car il est symétrique pour les signaux réels.
[Link] : Statistiques
Ce module contient de nombreuses distributions de probabilité et des fonctions statistiques.
• Distributions de probabilité :
Python
from [Link] import norm
57
58
[Link]()
[Link](True)
[Link]()
Objectif : Utiliser les outils de SciPy pour concevoir des filtres numériques et analyser le spectre de signaux.
o Tracez le spectre (FFT) de ces trois signaux. Commentez les différences observées.
2. Corrélation Croisée :
o Créez un signal s1 (ex: une séquence binaire aléatoire).
o Créez un signal s2 qui est une version décalée et légèrement bruitée de s1.
o Calculez la corrélation croisée entre s1 et s2 en utilisant [Link].
o Visualisez le résultat. La position du pic dans la corrélation croisée indique le décalage temporel entre les deux
signaux.
La visualisation est une étape cruciale en simulation. Elle permet de comprendre rapidement les tendances, de détecter les
anomalies et de communiquer efficacement les résultats. Matplotlib est la bibliothèque de base pour créer des graphiques
statiques en Python. Seaborn est construite sur Matplotlib et offre des outils plus avancés et esthétiques pour la visualisation
statistique.
Matplotlib : [Link]
pyplot est un module de Matplotlib qui fournit une interface de traçage de type MATLAB.
• Tracés de lignes ([Link]()) : Le type de graphique le plus courant pour les signaux temporels ou les courbes de
performance.
Python
import [Link] as plt
59
60
• Tracés de points ([Link]()) : Pour visualiser des nuages de points, comme des constellations.
Python
# Génération de points aléatoires pour simuler une constellation
i_val = [Link](500) * 0.1 + 1/[Link](2) # avec bruit
q_val = [Link](500) * 0.1 - 1/[Link](2) # avec bruit
60
61
[Link](figsize=(6, 6))
[Link](i_val, q_val, s=10, alpha=0.5, color='purple') # s=taille des points, alpha=transparence
[Link]('Constellation QPSK Bruitée')
[Link]('Composante en Phase (I)')
[Link]('Composante en Quadrature (Q)')
[Link](0, color='gray', linewidth=0.5)
[Link](0, color='gray', linewidth=0.5)
[Link](True)
[Link]('equal') # Assure des échelles égales sur les axes
[Link]()
Python
delais_paquets_ms = [Link](loc=50, scale=10, size=1000) # Délai moyen de 50ms, écart-type 10ms
[Link](figsize=(8, 5))
[Link](delais_paquets_ms, bins=30, density=True, alpha=0.7, color='teal', edgecolor='black')
[Link]('Distribution des Délais de Paquets')
[Link]('Délai (ms)')
61
62
[Link]('Densité de Probabilité')
[Link](True)
[Link]()
• Sous-tracés ([Link]()) : Pour afficher plusieurs graphiques dans une même figure.
Python
freq_ech = 1000 # Hz
temps = [Link](0, 1, freq_ech, endpoint=False)
signal_faible = [Link](2 * [Link] * 50 * temps)
signal_fort = [Link](2 * [Link] * 200 * temps)
[Link](figsize=(12, 5))
• Distribution de données :
Python
import seaborn as sns
import pandas as pd # Souvent utilisé avec Seaborn pour des données tabulaires
63
64
[Link](figsize=(8, 5))
[Link](data=df, x='Débit (Mbps)', hue='Protocole', kde=True, bins=20)
[Link]('Distribution des Débits par Protocole')
[Link]()
Explication : [Link] permet de tracer des histogrammes groupés avec une estimation de la densité de noyau (KDE), très
utile pour comparer des distributions.
• Diagrammes de boîte à moustaches (boxplot) : Pour visualiser la distribution (médiane, quartiles, valeurs aberrantes)
de plusieurs groupes de données.
Python
[Link](figsize=(8, 5))
[Link](data=df, x='Protocole', y='Débit (Mbps)')
[Link]('Débit par Protocole (Boîte à Moustaches)')
[Link]()
Pour des simulations plus complexes et pour une meilleure organisation du code, il est essentiel d'adopter de bonnes pratiques
de programmation. La modularité et la Programmation Orientée Objet (POO) sont des concepts clés qui rendent votre code
plus lisible, réutilisable et maintenable.
64
65
Dans la simulation, il est courant de devoir lire des paramètres depuis des fichiers (configurations, données d'entrée) ou de
sauvegarder les résultats pour une analyse ultérieure.
Python a des fonctions intégrées pour gérer les fichiers texte. Pour les fichiers CSV (Comma Separated Values), la bibliothèque
Pandas est beaucoup plus puissante.
Python
# Écriture dans un fichier
with open('resultats_simulation.txt', 'w') as f: # 'w' pour écriture (écrase si existe)
[Link]("SNR (dB), BER\n")
[Link]("5, 0.05\n")
[Link]("10, 0.001\n")
[Link]("15, 0.00001\n")
print("Fichier resultats_simulation.txt créé.")
contenu = [Link]()
print("\nContenu du fichier:")
print(contenu)
• Utilisation de Pandas pour les fichiers CSV : Pandas est une bibliothèque très puissante pour la manipulation et l'analyse
de données tabulaires (sous forme de DataFrame).
Python
import pandas as pd
# Création d'un DataFrame (table de données)
data_simu = {
'SNR_dB': [5, 10, 15, 20],
'BER_mesure': [0.05, 0.001, 1e-5, 1e-7],
'Debit_Mbps': [10, 20, 22, 23]
}
df_resultats = [Link](data_simu)
print("DataFrame des résultats :")
print(df_resultats)
66
67
Pour sauvegarder des objets Python complexes ou de grands tableaux NumPy, il existe des méthodes plus efficaces que le
format CSV.
• NumPy (.npy) : Format binaire natif de NumPy pour sauvegarder des tableaux. Très rapide et compact.
Python
grand_signal = [Link](1000000) # Un million de points
[Link]('grand_signal.npy', grand_signal)
print(f"\nSignal sauvegardé dans grand_signal.npy. Taille : {grand_signal.nbytes / (1024*1024):.2f} MB")
signal_charge = [Link]('grand_signal.npy')
67
68
• pickle (pour objets Python génériques) : Permet de "sérialiser" des objets Python (les convertir en un flux d'octets) pour
les sauvegarder et les recharger.
Python
import pickle
class ParametresSimu:
def __init__(self, freq, puissance, type_mod):
[Link] = freq
[Link] = puissance
self.type_modulation = type_mod
# Charger l'objet
with open('params_simu.pkl', 'rb') as f: # 'rb' pour lecture binaire
params_charge = [Link](f)
print(f"Objet chargé : Fréquence={params_charge.frequence}, Type de modulation={params_charge.type_modulation}")
69
70
MATLAB (MATrix LABoratory) est un environnement de calcul numérique et un langage de programmation propriétaire
développé par MathWorks. Il est largement utilisé dans l'ingénierie et la science pour des tâches telles que la manipulation
de matrices, le traçage de fonctions et de données, l'implémentation d'algorithmes, l'interface avec des programmes écrits
dans d'autres langages, et l'analyse de données.
Lorsque vous lancez MATLAB, vous êtes accueilli par un environnement intégré composé de plusieurs fenêtres clés :
• Fenêtre de commande (Command Window) : C'est le cœur interactif de MATLAB. Vous pouvez y taper des
commandes et des expressions, et les résultats sont affichés immédiatement. C'est idéal pour des calculs rapides ou pour
tester de petits bouts de code.
Matlab
>> 2 + 3
ans =
5
>> a = [1 2 3; 4 5 6]
a=
1 2 3
70
71
4 5 6
• Workspace (Espace de travail) : Cette fenêtre affiche toutes les variables que vous avez définies dans votre session
MATLAB, avec leur nom, leur valeur, leur taille et leur type. C'est très utile pour suivre l'état de vos données.
• Editor (Éditeur) : C'est là que vous écrivez, sauvegardez et exécutez vos scripts (.m files) et fonctions MATLAB. Il offre
des fonctionnalités comme la coloration syntaxique, l'auto-complétion, le débogage, etc.
• Current Folder (Dossier courant) : Cette fenêtre affiche le contenu du dossier dans lequel MATLAB travaille
actuellement. C'est important car MATLAB recherche les scripts et les fonctions dans ce dossier par défaut.
• Command History (Historique des commandes) : Enregistre toutes les commandes que vous avez tapées dans la Fenêtre
de commande, vous permettant de les réutiliser facilement.
Variables et types de données : MATLAB gère nativement les matrices. Un scalaire est une matrice 1×1.
Matlab
% Définition d'un scalaire
puissance_dbm = 20;
71
72
Opérations de base : Les opérations arithmétiques sont optimisées pour les matrices.
Matlab
A = [1 2; 3 4];
B = [5 6; 7 8];
• Scripts : Une série de commandes MATLAB exécutées séquentiellement. Utiles pour des tâches simples ou pour
configurer une simulation.
Matlab
% mon_script.m
72
73
Pour l'exécuter, tapez mon_script dans la Fenêtre de commande ou cliquez sur Run dans l'Editor.
• Fonctions : Des blocs de code réutilisables qui prennent des arguments en entrée et retournent des valeurs. Définies
par le mot-clé function. Elles sont sauvegardées dans des fichiers .m dont le nom correspond au nom de la fonction.
Matlab
% calculerFSPL.m
function fspl_db = calculerFSPL(frequence_ghz, distance_km)
% calculerFSPL Calcule la perte en espace libre (FSPL) en dB.
% fspl_db = calculerFSPL(frequence_ghz, distance_km)
% frequence_ghz: fréquence en GHz
% distance_km: distance en km
73
74
74
75
MATLAB est particulièrement puissant pour le traitement du signal grâce à ses capacités de manipulation matricielle et à la
Signal Processing Toolbox.
Génération de signaux :
• Séquences numériques :
Matlab
temps = 0:0.001:1; % Vecteur temps de 0 à 1 seconde avec un pas de 1 ms
frequence_ech = 1/0.001; % Fréquence d'échantillonnage (1000 Hz)
amplitude = 1;
f_signal = 50; % Fréquence du signal en Hz
signal_sinus = amplitude * sin(2*pi*f_signal*temps);
75
76
• Signaux aléatoires :
Matlab
% Génération de bits aléatoires (0 ou 1)
nb_bits = 1000;
bits_aleatoires = randi([0 1], 1, nb_bits); % 1 ligne, nb_bits colonnes
Les opérations de base (addition, multiplication) sont élément par élément si les dimensions correspondent (ou par
broadcasting implicite).
Matlab
signal_bruit = signal_sinus + bruit_gaussien; % Addition élément par élément
Filtrage numérique : MATLAB fournit des fonctions pour concevoir et appliquer des filtres numériques.
Matlab
76
77
% Application du filtre
signal_filtre = filter(b, a, signal_bruit);
Analyse fréquentielle : FFT (fft(), fftshift()), Densité Spectrale de Puissance (pwelch() ou periodogram()) :
Matlab
% Calcul de la FFT
Y = fft(signal_sinus);
L = length(signal_sinus);
f = frequence_ech*(0:(L/2))/L; % Vecteur de fréquences unilatérales
77
78
figure;
plot(f, P1)
title('Spectre d''Amplitude du Signal Sinusoïdal')
xlabel('Fréquence (Hz)')
ylabel('|P1(f)|')
grid on;
Explication : La fft calcule la Transformée de Fourier Discrète. Pour des signaux réels, le spectre est symétrique, donc on ne
prend généralement que la moitié positive des fréquences. pwelch est une méthode plus robuste pour estimer la DSP.
78
79
79
80
MATLAB excelle dans la création de graphiques et de visualisations, essentiels pour analyser et présenter les résultats de
simulation.
Fonctions de tracé 2D :
80
81
stem(bits);
title('Séquence de Bits');
xlabel('Index du Bit');
ylabel('Valeur');
ylim([-0.2 1.2]);
• scatter() : Pour les nuages de points (utile pour les constellations).
Matlab
% Points de constellation QPSK (exemple)
I = [1/sqrt(2), -1/sqrt(2), -1/sqrt(2), 1/sqrt(2)];
Q = [1/sqrt(2), 1/sqrt(2), -1/sqrt(2), -1/sqrt(2)];
scatter(I, Q, 100, 'filled', 'b'); % taille 100, rempli, couleur bleue
title('Constellation QPSK Idéale');
xlabel('Composante I');
ylabel('Composante Q');
axis([-1.5 1.5 -1.5 1.5]); % Fixe les limites des axes
axis equal; % Assure que les échelles des axes sont égales
grid on;
Personnalisation des graphiques :
Tracés multiples :
• hold on / hold off : Pour ajouter plusieurs tracés sur la même figure.
Matlab
t = 0:0.01:1;
plot(t, sin(2*pi*5*t), 'b-'); % Signal 1 (bleu, ligne continue)
hold on; % Garde le tracé actuel
plot(t, cos(2*pi*5*t), 'r--'); % Signal 2 (rouge, ligne pointillée)
hold off; % Relâche le tracé
legend('Sinus', 'Cosinus');
• subplot() : Pour créer une grille de graphiques dans une seule figure.
Matlab
figure;
subplot(2,1,1); % 2 lignes, 1 colonne, premier graphique
plot(t, sin(2*pi*5*t));
title('Signal Sinus');
subplot(2,1,2); % 2 lignes, 1 colonne, deuxième graphique
plot(t, cos(2*pi*5*t));
82
83
title('Signal Cosinus');
Simulink est un environnement de développement graphique pour la modélisation, la simulation et l'analyse de systèmes
dynamiques et embarqués, intégré à MATLAB. Il permet de construire des modèles en glissant-déposant des blocs prédéfinis
et en les connectant, ce qui est particulièrement intuitif pour la conception de systèmes complexes, y compris en
télécommunications.
1. Depuis MATLAB, tapez simulink dans la Command Window, ou cliquez sur l'icône Simulink dans la barre d'outils.
2. Une fenêtre "Simulink Start Page" apparaît. Choisissez "Blank Model" pour créer un nouveau modèle vide. Cela ouvrira
la fenêtre de l'éditeur Simulink.
(Description de Capture d'écran : La fenêtre "Simulink Start Page" avec l'option "Blank Model" mise en évidence.) (Description
de Capture d'écran : Une fenêtre de l'éditeur Simulink vide, avec un fond blanc et les menus et barres d'outils en haut.)
Le Simulink Library Browser : Cette fenêtre contient toutes les bibliothèques de blocs disponibles dans Simulink, organisées
par catégories. C'est votre principal point d'accès aux composants pour construire vos modèles.
• Organisation : Les blocs sont regroupés logiquement : Sources (générateurs de signaux), Sinks (visualiseurs de données),
Math Operations, Logic and Bit Operations, Signal Routing, etc.
• Toolboxes spécifiques : Pour les télécommunications, les bibliothèques les plus importantes sont :
o Communications Toolbox : Contient des blocs pour la modulation/démodulation, le codage canal, les canaux
de propagation, les mesures BER, etc.
83
84
o DSP System Toolbox : Blocs pour le traitement du signal numérique (filtres, FFT, convertisseurs).
o RF Blockset : Pour la modélisation de blocs RF en bande de base équivalente ou en bande passante.
(Description de Capture d'écran : La fenêtre du Simulink Library Browser, montrant la liste des bibliothèques à gauche et les
blocs d'une catégorie sélectionnée (ex: Sources) à droite.)
Blocs sources, sinks, mathématiques, logiques :
• Sources :
o Sine Wave : Génère un signal sinusoïdal.
o Step : Génère un échelon.
o Constant : Fournit une valeur constante.
o Random Number : Génère des nombres aléatoires.
o From Workspace : Lit des données depuis l'espace de travail MATLAB.
• Sinks :
o Scope : Affiche les signaux en fonction du temps. C'est l'équivalent d'un oscilloscope virtuel.
o Display : Affiche une valeur numérique.
o To Workspace : Écrit les données Simulink vers l'espace de travail MATLAB.
• Opérations mathématiques :
o Sum : Additionne plusieurs signaux.
o Product : Multiplie plusieurs signaux.
o Gain : Multiplie un signal par une constante.
o Fcn : Permet de définir une expression mathématique personnalisée.
• Ajouter des blocs : Faites glisser les blocs du Library Browser vers l'éditeur de modèle, ou double-cliquez sur l'espace
de travail et tapez le nom du bloc.
84
85
• Connecter les blocs : Cliquez sur le port de sortie d'un bloc et glissez la souris vers le port d'entrée d'un autre bloc. Une
ligne (signal) apparaît.
• Signaux : Les lignes représentent les signaux qui transitent entre les blocs. Ils peuvent être scalaires, vectoriels ou
matriciels.
• Ports : Petits carrés à l'entrée ou la sortie des blocs. Les ports d'entrée sont à gauche, les ports de sortie sont à droite.
Paramétrage des blocs (double-clic) : Double-cliquez sur n'importe quel bloc pour ouvrir sa fenêtre de dialogue de paramètres.
Vous pouvez y ajuster des propriétés spécifiques au bloc (ex: fréquence d'un Sine Wave, gain d'un Gain bloc, nombre
d'échantillons d'un modulateur).
• Lancement : Cliquez sur le bouton Run (triangle vert) dans la barre d'outils de l'éditeur Simulink.
• Arrêt : Cliquez sur le bouton Stop (carré rouge) pendant la simulation.
• Temps de simulation : Vous pouvez définir la durée de la simulation dans la barre d'outils (Stop time).
o Double-cliquez dessus et configurez-le : Amplitude = 1, Frequency (rad/s) = 2*pi*10 (pour 10 Hz), Sample time
= 0.001.
3. Appliquer un gain :
85
86
Simulink, combiné aux Toolboxes spécifiques comme Communications Toolbox et DSP System Toolbox, offre une richesse
de blocs pour simuler des systèmes de télécommunications complexes.
86
87
• Bernoulli Binary Generator (Communications Toolbox / Sources) : Génère une séquence de bits binaires aléatoires (0
ou 1) avec une probabilité spécifiée.
o Paramètres clés : Probability of a zero, Sample time.
• AWGN Channel (Communications Toolbox / Channels) : Ajoute du bruit blanc gaussien additif à un signal.
o Paramètres clés : Es/No (dB) (Énergie par symbole sur densité spectrale de bruit), Eb/No (dB) (Énergie par bit
sur densité spectrale de bruit), SNR (dB) (Rapport Signal/Bruit). Input signal power.
• Error Rate Calculation (Communications Toolbox / Sinks) : Calcule le taux d'erreur binaire (BER) ou le taux d'erreur
de symbole (SER) en comparant un signal d'entrée (original) et un signal de référence (reçu).
o Paramètres clés : Receive delay (pour synchroniser les séquences), Computation method (port, bit, symbol).
• Constellation Diagram (Communications Toolbox / Sinks) : Affiche la constellation d'un signal complexe.
o Paramètres clés : Reference constellation, Symbols per plot.
• BPSK Modulator Baseband / BPSK Demodulator Baseband : Pour la modulation/démodulation BPSK en bande de base
équivalente.
o Paramètres clés : Constellation ordering (Binary, Gray).
• QPSK Modulator Baseband / QPSK Demodulator Baseband : Pour la modulation/démodulation QPSK.
• QAM Modulator Baseband / QAM Demodulator Baseband : Pour les modulations QAM (16-QAM, 64-QAM, etc.).
o Paramètres clés : M-ary number (ordre de la modulation), Constellation ordering, Normalization method.
• Discrete FIR Filter / Discrete IIR Filter : Pour appliquer des filtres numériques.
87
88
88
89
La simulation n'est pas une science exacte. Pour que les résultats soient fiables et représentatifs, il est crucial d'appliquer des
principes statistiques rigoureux.
• Pourquoi la réplication ? Les simulations de systèmes de communication impliquent souvent des phénomènes aléatoires
(bruit, trafic, fading). Une seule exécution de la simulation fournit un seul échantillon du comportement du système.
Ce résultat peut être influencé par la particularité de cette séquence aléatoire spécifique. Pour obtenir des résultats
fiables et représentatifs, il est nécessaire de répéter la simulation plusieurs fois. Chaque répétition est appelée une
réplication.
• Moyenne des résultats : En exécutant la simulation N fois avec des séquences de nombres aléatoires différentes pour
chaque réplication, on obtient N observations de chaque métrique de performance (ex: BER1,BER2,...,BERN). La
moyenne de ces observations fournit une estimation plus stable et fiable de la vraie performance du système. $
\text{Moyenne}(\text{Métrique}) = \frac{1}{N} \sum_{i=1}^{N} \text{Métrique}_i $
5.1.2. Intervalles de Confiance
Bien que la moyenne soit une meilleure estimation, elle ne nous dit pas à quel point cette estimation est précise. C'est là
qu'interviennent les intervalles de confiance.
• Définition : Un intervalle de confiance est une plage de valeurs, calculée à partir des données observées d'une
simulation, qui est susceptible de contenir la vraie valeur du paramètre de population avec un certain niveau de
confiance (par exemple, 95% ou 99%).
89
90
• Calcul (pour la moyenne) : Pour une moyenne d'échantillon Xˉ et une taille d'échantillon N grande (souvent N≥30),
l'intervalle de confiance à (1−α)×100% pour la moyenne est donné par : $ \bar{X} \pm Z_{\alpha/2} \frac{S}{\sqrt{N}}
$ Où :
o Xˉ est la moyenne des N réplications.
o S est l'écart-type des N réplications (l'estimation de l'écart-type de la population).
o N est le nombre de réplications.
o Zα/2 est le score Z correspondant au niveau de confiance désiré (par exemple, pour un intervalle de confiance
à 95%, α=0.05, donc α/2=0.025, et Z0.025≈1.96).
o Pour de petits échantillons (N<30), on utilise la distribution t de Student au lieu de la distribution normale,
avec un coefficient tα/2,N−1.
• Interprétation : Un intervalle de confiance à 95% pour le BER moyen de [0.012, 0.018] signifie que si vous répétiez
l'expérience un grand nombre de fois, 95% des intervalles de confiance calculés contiendraient la "vraie" valeur du
BER.
• Réduction de la largeur de l'intervalle : Pour obtenir un intervalle de confiance plus étroit (une estimation plus
précise), il faut généralement augmenter le nombre de réplications (N).
Exemple de calcul d'intervalle de confiance en MATLAB :
Matlab
% Supposons que ber_replications est un vecteur de BER obtenus de 30 réplications
ber_replications = [0.015, 0.018, 0.014, 0.016, 0.017, 0.015, 0.019, 0.013, ...
0.016, 0.015, 0.017, 0.014, 0.018, 0.016, 0.015, 0.017, ...
0.014, 0.016, 0.018, 0.015, 0.017, 0.013, 0.016, 0.014, ...
90
91
n_replications = length(ber_replications);
mean_ber = mean(ber_replications);
std_ber = std(ber_replications); % Écart-type échantillon
% Marge d'erreur
margin_of_error = z_score * (std_ber / sqrt(n_replications));
% [h, p, ci] = ttest(ber_replications, 0, 'Alpha', alpha); % compare à 0, pas ce qu'on veut ici
% Utilisez plutôt pour l'intervalle de confiance :
% [h, p, ci, stats] = ttest(ber_replications);
% mean_ber_ttest = [Link];
% ci_ttest = ci;
% fprintf('Avec ttest : BER moyen : %f, IC 95%% : [%f, %f]\n', mean_ber_ttest, ci_ttest(1), ci_ttest(2));
• Point de coupure (Stopping Criteria) : Déterminer quand arrêter une simulation est crucial. Simuler trop longtemps
gaspille des ressources ; simuler pas assez longtemps conduit à des résultats non fiables. Plusieurs critères peuvent être
utilisés :
o Nombre fixe de réplications : Simuler N fois, puis s'arrêter. Simple mais peut être inefficace si la convergence
est rapide ou lente.
o Durée de simulation fixe : Exécuter la simulation pendant un certain temps simulé (ex: 1000 secondes de
trafic).
o Stabilité des intervalles de confiance : Arrêter lorsque la largeur de l'intervalle de confiance d'une métrique clé
devient suffisamment étroite. C'est une approche plus robuste car elle garantit une précision statistiquement
acceptable.
o Nombre d'événements : Arrêter après un certain nombre de paquets traités, de bits envoyés, etc. Très utile
pour des métriques comme le BER (simuler jusqu'à un certain nombre d'erreurs).
• Période d'échauffement (Warm-up Period) : Au début d'une simulation, le système peut ne pas être dans un état
"stable" (par exemple, les files d'attente sont vides, les tables de routage sont en cours d'établissement). Les données
92
93
collectées pendant cette phase initiale peuvent fausser les statistiques moyennes. Il est courant d'ignorer les données
de la période d'échauffement.
o Détection : La période d'échauffement peut être déterminée en observant l'évolution des métriques de
performance au début de la simulation. Lorsque les métriques se stabilisent, la période d'échauffement est
terminée.
Objectif : Appliquer les concepts de réplication et d'intervalles de confiance pour obtenir des résultats fiables à partir de
simulations.
Des graphiques clairs et informatifs sont essentiels pour communiquer les résultats de simulation.
94
95
o BER vs. Eb/No : Le graphique le plus fondamental en télécommunications, montrant le taux d'erreur binaire en
fonction du rapport énergie par bit sur densité spectrale de bruit. L'axe des y est souvent en échelle logarithmique
(semilogy).
o Débit vs. Charge / Nombre d'utilisateurs : Montre comment le débit évolue avec la charge réseau.
o Délai vs. Charge / Nombre d'utilisateurs : Montre l'impact de la charge sur le temps de transmission.
o Comparaison de protocoles : Plusieurs courbes sur le même graphique pour comparer différentes approches.
• Histogrammes et Distributions :
o Distribution des délais : Montre la fréquence d'apparition de différents délais de paquets. Permet de visualiser le
jitter et la variance.
o Distribution de la puissance reçue : Utile pour l'analyse des canaux de fading.
o Charge des files d'attente : Montre la distribution du nombre de paquets dans une file d'attente.
• Diagrammes de dispersion (Scatter Plots) :
o Constellations : Vues de la constellation des symboles (parties réelle vs. imaginaire) après un canal bruité ou
déformé. Indique visuellement la qualité du signal.
o Débit par utilisateur en fonction de la distance : Peut montrer comment la performance individuelle varie
spatialement.
• Box Plots (Diagrammes en boîte à moustaches) :
o Affichent la distribution d'une métrique sur plusieurs réplications ou pour différentes configurations. Ils montrent
la médiane, les quartiles et les valeurs aberrantes. Utile pour comparer rapidement la dispersion de plusieurs jeux
de données.
95
96
figure;
semilogy(EbNo_vals, mean_bers, 'b-o', 'LineWidth', 1.5, 'MarkerSize', 6);
hold on;
% Ajouter les intervalles de confiance comme des barres d'erreur
errorbar(EbNo_vals, mean_bers, mean_bers - lower_ci, upper_ci - mean_bers, 'b.');
% Ou tracer des lignes de bord pour l'IC si plus simple
% semilogy(EbNo_vals, lower_ci, 'b--', 'LineWidth', 0.5);
% semilogy(EbNo_vals, upper_ci, 'b--', 'LineWidth', 0.5);
96
97
La dernière étape d'une simulation est l'interprétation des résultats et leur présentation claire dans un rapport.
97
98
1. Introduction :
o Contexte du problème.
o Objectifs de la simulation (quelles questions la simulation cherche-t-elle à répondre ?).
o Brève présentation du système simulé.
2. Modèle de Simulation :
o Description détaillée du modèle : Quels composants sont inclus (émetteur, canal, récepteur, trafic, protocole
MAC, etc.) ?
o Hypothèses et simplifications : Quelles hypothèses ont été faites ? Quelles parties du système réel ont été
simplifiées ou ignorées et pourquoi ? (Ex: canal AWGN pur, pas de mobilité, pas de codage canal).
o Outils utilisés : MATLAB/Simulink, ns-3, OMNeT++, etc.
o Topologie (si réseau) : Diagramme clair du réseau simulé.
3. Paramètres de Simulation :
o Tous les paramètres numériques utilisés : fréquences, débits, puissances, Eb/N0, nombre de bits/paquets simulés,
durée de simulation, nombre de réplications.
o Tableau récapitulatif des paramètres importants.
4. Métrique de Performance :
o Quelles métriques ont été mesurées (BER, débit, délai, PLR, etc.) ?
98
99
o Comment ces métriques ont-elles été calculées (ex: BER moyen sur X réplications, avec IC) ?
5. Résultats et Analyse :
o Présentation graphique : Insérez les graphiques créés (BER vs. Eb/N0, constellations, histogrammes, etc.). Chaque
graphique doit avoir un titre, des labels d'axes, une légende et une numérotation.
o Interprétation : Décrivez ce que chaque graphique montre. Expliquez les tendances observées. Comparez les
résultats simulés avec la théorie ou d'autres études (si applicable).
o Discussion des écarts : Si les résultats ne correspondent pas aux attentes (ex: écart significatif avec la théorie),
discutez des raisons possibles (limitations du modèle, nombre insuffisant de réplications, erreurs de
configuration).
o Impact des paramètres : Comment les variations des paramètres de simulation affectent-elles les performances ?
6. Conclusion :
o Récapitulez les principales conclusions tirées de la simulation.
o Répondez aux objectifs posés dans l'introduction.
o Limitations de l'étude : Mentionnez les points qui n'ont pas été modélisés ou les limites de la simulation.
o Perspectives : Suggérez des travaux futurs (comment le modèle pourrait être amélioré, quels scénarios
supplémentaires pourraient être explorés).
7. Références (si applicable) :
8. Annexe (si applicable) : Code source, données brutes, etc.
99
100
• Clarté des graphiques : Titres clairs, labels d'axes lisibles, légendes explicites. Utilisation de couleurs et de marqueurs
distincts pour les différentes courbes.
• Échelle des axes : Utiliser des échelles appropriées (linéaire, logarithmique) en fonction de la métrique.
• Cohérence : Assurer la cohérence des unités, des conventions de nommage et du style dans tout le rapport.
• Discussion : Les graphiques ne parlent pas d'eux-mêmes. Chaque graphique doit être introduit, analysé et résumé par
du texte.
• Réponses aux questions de recherche : Le rapport doit clairement répondre aux questions posées au début de la
simulation.
100
101
101
102
103