0% ont trouvé ce document utile (0 vote)
23 vues104 pages

Outils Informatiques en Télécommunications

Le document présente un cours sur les outils informatiques pour les ingénieurs en télécommunications, soulignant l'importance de la simulation et de la conception assistée par ordinateur. Les objectifs incluent la maîtrise des concepts fondamentaux, l'utilisation de logiciels de simulation et le développement de scripts pour automatiser des tâches. Le cours s'adresse aux étudiants de Licence 2 en Télécommunications, avec des prérequis en programmation, mathématiques, principes des télécommunications et électronique.

Transféré par

benypanzu46
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues104 pages

Outils Informatiques en Télécommunications

Le document présente un cours sur les outils informatiques pour les ingénieurs en télécommunications, soulignant l'importance de la simulation et de la conception assistée par ordinateur. Les objectifs incluent la maîtrise des concepts fondamentaux, l'utilisation de logiciels de simulation et le développement de scripts pour automatiser des tâches. Le cours s'adresse aux étudiants de Licence 2 en Télécommunications, avec des prérequis en programmation, mathématiques, principes des télécommunications et électronique.

Transféré par

benypanzu46
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

OUTILS INFORMATIQUES DE

L’INGENIEURD
’ALGOR
2e année Télécommunication

Prof. ILUNGA Elisée ASS. MANZENZA Archange

Année académique 2024-2025


2

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

À l'issue de ce cours, vous serez capable de :

• 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.

Public cible et prérequis

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

MODULE 1 : INTRODUCTION AUX OUTILS DE CONCEPTION ET DE SIMULATION


1.1. ROLE ET IMPORTANCE DES OUTILS INFORMATIQUES EN TELECOMMUNICATIONS

1.1.1. Le besoin de la simulation : Pourquoi simuler plutôt que construire ?

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.

Exercice : Discussion de cas d'utilisation réels

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 ?

1.2. CLASSIFICATION DES OUTILS INFORMATIQUES EN TELECOMMUNICATIONS

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

1.2.1. Outils de Conception Assistée par Ordinateur (CAO/CAD)

Ces outils se concentrent sur la création physique ou logique de composants et de systèmes.

• CAO de circuits et systèmes électroniques :


o Description : Logiciels utilisés pour dessiner des schémas électroniques, simuler le comportement de circuits
analogiques et numériques, et réaliser le routage des cartes de circuits imprimés (PCB). Ils permettent de vérifier
la connectivité, l'intégrité du signal et l'alimentation.
o Exemples : Altium Designer, KiCad (open source), Eagle, OrCAD.
o Application en télécom : Conception de modules RF, de filtres d'alimentation pour des équipements de
télécommunication, de cartes contrôleur pour des stations de base, etc.
• CAO RF/Hyperfréquences et électromagnétique :
o Description : Logiciels spécialisés dans la modélisation et la simulation du comportement électromagnétique des
composants à haute fréquence. Ils permettent de concevoir des antennes, des lignes de transmission, des filtres,
des coupleurs, des amplificateurs, en prenant en compte les effets de propagation des ondes électromagnétiques.
o Exemples : Ansys HFSS, CST Studio Suite, Keysight ADS (Advanced Design System), Cadence AWR Design
Environment.
o Application en télécom : Conception d'antennes pour les stations de base ou les terminaux mobiles, de filtres RF
pour éviter les interférences, de coupleurs directionnels pour la mesure de puissance, de circuits intégrés RF
(RFICs).

8
9

1.2.2. Outils de Simulation Système et Traitement du Signal

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.

• Environnements de calcul numérique / Programmation scientifique :


o Description : Plateformes fournissant un environnement de calcul matriciel et vectoriel puissant, avec des
bibliothèques étendues pour le traitement du signal, les statistiques, l'optimisation, etc. Ils sont très flexibles pour
l'implémentation d'algorithmes personnalisés et la simulation de chaînes de communication de bout en bout.
o Exemples : MATLAB, Python (avec des bibliothèques comme NumPy, SciPy, Pandas).
o Application en télécom : Développement d'algorithmes de modulation/démodulation, de codage canal,
d'égalisation, d'estimation de canal, d'analyse de performance (BER vs. SNR), de filtrage numérique.
• Simulation par blocs (block-diagram) :
o Description : Permettent de construire des systèmes complexes en assemblant des blocs fonctionnels prédéfinis.
Cela facilite la modélisation graphique et la simulation de systèmes sans avoir à écrire des lignes de code détaillées
pour chaque composant. Idéal pour les études de haut niveau.
o Exemples : Simulink (extension de MATLAB), GNU Radio (open source).
o Application en télécom : Simulation de chaînes de transmission complètes (émetteur, canal, récepteur),
évaluation de l'impact des interférences, du bruit, de la non-linéarité sur le signal.
• Langages de description matérielle (HDL) :
o Description : Langages textuels pour décrire le comportement et la structure de circuits numériques, utilisés pour
la conception de circuits intégrés spécifiques (ASIC) ou de circuits reconfigurables (FPGA). Permettent la
simulation à un niveau de registre ou de porte logique.
9
10

o Exemples : VHDL, Verilog.


o Application en télécom : Implémentation matérielle de modulateurs/démodulateurs à haute vitesse, de
codeurs/décodeurs, de contrôleurs de protocole. (Bien que pertinents, ces outils sont généralement couverts
dans des cours de Conception Numérique ou FPGA, et seront moins approfondis ici).

1.2.3. Outils de Simulation de Réseaux et de Protocoles

Ces outils permettent de modéliser le comportement des réseaux de communication, des interactions entre les nœuds aux
performances des protocoles.

• Simulateurs d'événements discrets (DES - Discrete Event Simulators) :


o Description : Ces simulateurs modélisent les interactions entre les composants du réseau comme une série
d'événements discrets (envoi de paquet, réception, collision, etc.). Ils sont très précis pour analyser le
comportement des protocoles (routage, contrôle d'accès au support, transport) et l'impact sur le débit, le délai,
la gigue et les pertes de paquets.
o Exemples : OPNET/Riverbed Modeler, NS-3 (Network Simulator 3), OMNeT++.
o Application en télécom : Évaluation des performances de nouveaux protocoles de routage dans des réseaux
mobiles ad hoc, analyse de la QoS/QoE dans des réseaux cellulaires (4G/5G), étude de la congestion dans les
réseaux IP.
• Émulateurs de réseaux :
o Description : Contrairement aux simulateurs qui modélisent les entités, les émulateurs exécutent de vrais systèmes
d'exploitation réseau et applications sur des machines virtuelles ou des conteneurs. Cela permet de tester des
configurations très proches de la réalité, d'interagir avec de vraies applications et de valider des politiques de
sécurité ou de routage complexes.

10
11

o Exemples : GNS3, EVE-NG, Cisco Packet Tracer.


o Application en télécom : Préparation aux certifications réseau (Cisco CCNA/CCNP), test de la connectivité et de
la configuration de routeurs virtuels avant un déploiement physique, validation de politiques de pare-feu.
1.2.4. Outils de Visualisation et d'Analyse de Données

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.

1.3. VUE D'ENSEMBLE DES LOGICIELS COURANTS ET METHODOLOGIES DE SIMULATION

Pour vous donner un aperçu concret, examinons rapidement les interfaces typiques de quelques-uns des logiciels que nous
aborderons dans ce cours.

1.3.1. Présentation rapide des interfaces des logiciels phares

(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

• OPNET/Riverbed Modeler (ou NS-3) :


o Description : OPNET a une interface graphique pour créer des topologies de réseau en glissant-déposant des
nœuds (routeurs, serveurs, clients). On configure les attributs de chaque nœud et lien. NS-3 est principalement
piloté par des scripts Python/C++, on ne verrait donc pas d'interface graphique pour la construction de la
topologie, mais plutôt l'exécution de scripts et la visualisation des résultats avec Matplotlib.
o Intérêt : Pour simuler le comportement de réseaux à grande échelle et l'interaction des protocoles.
o (Description de capture d'écran (pour OPNET) : une topologie réseau avec des routeurs, des PCs et des liens.
Ou (pour NS-3) un script Python exécuté dans un terminal avec une sortie de log, et un graphique de
performance généré.)

15
16

1.3.2. Méthodologies de simulation : Une approche structurée

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.

• Modélisation : L'art de l'abstraction


o Il s'agit de représenter le système réel par un modèle mathématique ou un ensemble de règles logiques que le
simulateur peut comprendre. Cela implique de faire des choix critiques sur ce qui doit être inclus et ce qui peut
être ignoré (abstractions).
o Modèles déterministes vs. Stochastiques : Un modèle déterministe produit toujours le même résultat pour les
mêmes entrées (ex: un filtre linéaire). Un modèle stochastique intègre de l'aléatoire (ex: bruit, arrivées de
paquets), nécessitant plusieurs exécutions pour obtenir des résultats statistiquement significatifs.
o Modèles analytiques vs. empiriques : Les modèles analytiques sont basés sur des équations
physiques/mathématiques. Les modèles empiriques sont basés sur des observations et des mesures.
• Validation : S'assurer que le modèle est juste
o C'est l'étape où l'on vérifie que le modèle de simulation représente fidèlement le système réel pour les objectifs
d'étude. On compare les résultats de simulation à des :
▪ Données théoriques ou analytiques : Si un modèle analytique existe pour un cas simple, la simulation doit
le reproduire.
▪ Données expérimentales : Si des mesures sur un prototype physique sont disponibles, la simulation doit
correspondre.
▪ Résultats d'autres simulateurs : Comparer avec des outils déjà validés.
• Analyse des résultats : Tirer des conclusions pertinentes

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

MODULE 2 : SIMULATION ET ÉMULATION DE RESEAUX

2.1. PRINCIPES DE LA SIMULATION ET DE L'ÉMULATION DE RESEAUX

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.

2.1.1. Pourquoi Simuler ou Émuler les Réseaux ?

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.

2.1.2. Types d'Approches : Simulation vs. Émulation

Il est crucial de distinguer ces deux approches, bien qu'elles soient souvent utilisées de manière complémentaire.

• Simulation Discrète à Événements (Discrete-Event Simulators - DES) :


o Principe : Ces simulateurs avancent dans le temps en sautant d'un événement à l'autre (par exemple, arrivée
d'un paquet, fin de transmission, collision). Entre deux événements, l'état du système est supposé inchangé. Ils
se concentrent sur la modélisation mathématique du comportement.
o Avantages : Très efficaces pour simuler de grands réseaux sur de longues périodes, car ils ne simulent pas
chaque micro-instant mais seulement les moments où un changement significatif se produit. Permettent de
modéliser des interactions complexes entre protocoles.
o Limites : Le code réseau n'est pas "réel", il est modélisé. Difficile de tester de vraies applications ou des
équipements physiques.
o Exemples : ns-3, OMNeT++, OPNET (Riverbed Modeler).
• Émulation de Réseaux :

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.

2.1.3. Mesures de Performance Typiques en Réseaux

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.

2.2. CONCEPTS DE TRAFIC RESEAU

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.

2.2.1. Modèles de 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.

• Trafic Poissonien (Poisson Traffic) :


o Principe : Les arrivées de paquets (ou l'initiation de sessions) suivent une distribution de Poisson, ce qui signifie
que les intervalles entre les arrivées sont exponentiellement distribués et que les événements sont indépendants.
o Application : Souvent utilisé pour modéliser des flux de requêtes courtes et indépendantes, comme des requêtes
HTTP pour de petites pages web ou des appels téléphoniques.
o Limitations : Ne capture pas l'auto-similarité ou la nature "en rafale" (bursty) de nombreux trafics réseau
modernes.
o Implémentation : Générer des nombres aléatoires exponentiels pour les intervalles entre les événements.
• Trafic Auto-similaire (Self-Similar Traffic) / Trafic en Rafale (Bursty Traffic) :
o Principe : Le trafic présente des propriétés statistiques similaires à différentes échelles de temps. Cela signifie que
des rafales de trafic se produisent à la fois sur de courtes et de longues périodes.
o Application : Caractéristique de nombreux trafics réseau actuels (vidéo, navigation web, etc.). Il est dû à la
superposition de nombreux flux de données ON-OFF.
o Limitations : Plus complexe à modéliser mathématiquement.

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.

Générateurs de trafic dans les simulateurs/émulateurs :

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.

2.2.2. Qualité de Service (QoS) et Classes de Trafic

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

2.3.1. Simulateurs Discrets à Événements : ns-3 et OMNeT++ (Approche Conceptuelle)

Ces simulateurs sont des piliers pour la recherche en réseau.

• 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

2.3.2. Émulateurs de Réseaux : GNS3 et Cisco Packet Tracer

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

• Cisco Packet Tracer :


o Présentation : Un simulateur/émulateur visuel développé par Cisco Systems, principalement destiné à
l'apprentissage et la certification des technologies Cisco (CCNA, CCNP). Il n'utilise pas de vraies images d'OS,
mais des modèles de comportement des équipements Cisco.
o Fonctionnalités clés :
▪ Interface graphique intuitive : Facilité de glisser-déposer des équipements Cisco.

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

2.3.3. Outils de Planification Réseau : Atoll et Proteus (Présentation)

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

• Proteus (Labcenter Electronics) :


o Présentation : Un ensemble d'outils de conception de circuits électroniques, incluant la conception de schémas
(ISIS) et la simulation de circuits (ARES). Bien que principalement orienté électronique, il est pertinent pour la
conception et la simulation de dispositifs de communication au niveau matériel/embarqué.
o Fonctionnalités clés :
▪ Simulation de microcontrôleurs : Permet de simuler le firmware d'un microcontrôleur directement sur le
schéma du circuit.
▪ Simulation de circuits mixtes : Analogique et numérique.
▪ Bibliothèque de composants : Vaste bibliothèque de composants électroniques, y compris des modules de
communication (UART, SPI, I2C, Bluetooth, GSM, Ethernet).
▪ Instruments virtuels : Oscilloscope, analyseur logique, etc.
o Avantages : Permet de concevoir, de tester et de déboguer des systèmes embarqués de communication avant
même de fabriquer le matériel. Réduit considérablement le temps et les coûts de développement.
o Limites : N'est pas un simulateur de réseau au sens large (il ne modélise pas la propagation radio à grande échelle
ou les protocoles réseau complexes). Se concentre sur le niveau composant/périphérique.

33
34

TD: Compréhension des cas d'usage d'Atoll et Proteus (Discussion)

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

MODULE 3 : PROGRAMMATION SCIENTIFIQUE POUR LES TELECOMMUNICATIONS


3.1. PYTHON POUR L'INGENIEUR TELECOM

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.

3.1.1. Introduction à l'environnement Python pour la science

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 :

1. Rendez-vous sur le site officiel d'Anaconda : [Link]


2. Téléchargez l'installeur correspondant à votre système d'exploitation (Windows, macOS, Linux).
3. Suivez les instructions d'installation. Il est généralement recommandé de laisser les options par défaut, notamment "Add
Anaconda to my PATH environment variable" (bien que cela puisse parfois nécessiter une configuration manuelle sur
certains systèmes).
4. Une fois l'installation terminée, vous devriez pouvoir lancer l'Anaconda Navigator, une interface graphique qui vous
permet de gérer vos environnements et de lancer des applications comme Jupyter Notebook, Spyder ou VS Code.
(Description de Capture d'écran : L'interface d'Anaconda Navigator montrant les applications disponibles (Jupyter Notebook,
Spyder, VS Code, etc.) et la gestion des environnements.)

36
37

Jupyter Notebook : Votre laboratoire interactif


Jupyter Notebook est un environnement de développement interactif basé sur un navigateur web. Il est idéal pour la prise
de notes, l'expérimentation de code, la visualisation de données et la création de rapports. Il combine du texte formaté
(Markdown), du code Python exécutable et les sorties de ce code (graphiques, tableaux).
Lancer Jupyter Notebook :
• Depuis Anaconda Navigator, cliquez sur "Launch" sous "Jupyter Notebook".
• Ouvert un terminal (Anaconda Prompt sous Windows) et tapez jupyter notebook.
Cela ouvrira une nouvelle page dans votre navigateur web, affichant l'explorateur de fichiers de votre système. Vous pouvez
y naviguer, créer de nouveaux notebooks (New -> Python 3), ou ouvrir des notebooks existants.
Structure d'un Jupyter Notebook : Un notebook est composé de cellules. Il existe deux types principaux de cellules :
• Cellules de code : Contiennent du code Python exécutable. Vous pouvez les exécuter en appuyant sur Shift + Entrée.
Le résultat s'affichera juste en dessous.
• Cellules Markdown : Contiennent du texte formaté (titres, listes, gras, italique, etc.). C'est parfait pour ajouter des
explications, des consignes ou des commentaires.

(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

Rappels des fondamentaux de Python :

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.

Commentaires : Utilisez # pour un commentaire sur une ligne.


Python
# Ceci est un commentaire sur une seule ligne
Variables et Types de Données : Python est dynamiquement typé, vous n'avez pas besoin de déclarer le type d'une variable.

38
39

Python
# Nombres entiers (integers)
age = 30
print(type(age)) # <class 'int'>

# Nombres à virgule flottante (floats)


temperature = 25.5
print(type(temperature)) # <class 'float'>

# Chaînes de caractères (strings)


nom = "Alice"
print(type(nom)) # <class 'str'>

# Booléens (Booleans)
est_valide = True
print(type(est_valide)) # <class 'bool'>

Opérateurs :

• Arithmétiques : +, -, *, / (division flottante), // (division entière), % (modulo), ** (puissance).


• Comparaison : == (égal à), != (différent de), >, <, >=, <=.
• Logiques : and, or, not.
Python
x = 10

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

if snr_db > 20:


print("Très bonne qualité de signal.")
elif snr_db > 10:
print("Bonne qualité de signal.")
else:
print("Qualité de signal médiocre.")

41
42

• Boucles for : Pour itérer sur une séquence.


Python
bandes = ["LTE", "5G NR", "Wi-Fi"]
for bande in bandes:
print(f"Simulation pour la bande : {bande}")

# Itérer sur une plage de nombres


for i in range(5): # range(5) génère 0, 1, 2, 3, 4
print(f"Itération {i}")

• 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

print("Simulation terminée : trop d'erreurs.")

Fonctions : Les fonctions permettent d'organiser votre code en blocs réutilisables.

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

import math # N'oubliez pas d'importer les modules nécessaires

snr_db_val = 10
snr_lineaire_val = calculer_snr_lineaire(snr_db_val)

43
44

print(f"Un SNR de {snr_db_val} dB correspond à {snr_lineaire_val:.2f} en linéaire.")

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.")

TD : Prise en main de Jupyter Notebook et Fonctions Python Basiques

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

▪ f=900 MHz, d=10 km

44
45

o Utilisez des commentaires pour expliquer vos étapes.


6. Sauvegarder le notebook.

3.1.2. NumPy : Le cœur du calcul numérique en Python

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.

Le type ndarray : Le tableau N-dimensionnel

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.

Création de tableaux NumPy :

• À partir d'une liste Python :

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

print(tableau_simple.shape) # (5,) - un vecteur de 5 éléments

• Tableaux de zéros ou de uns :

Python
zeros_vec = [Link](10) # Vecteur de 10 zéros
print(zeros_vec)

ones_matrix = [Link]((3, 4)) # Matrice 3x4 de uns


print(ones_matrix)

• 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)

# [Link](début, fin, nombre_points) - utile pour des axes temporels/fréquentiels


temps = [Link](0, 1, 100) # 100 points entre 0 et 1 (inclus)
print(temps[:5]) # Afficher les 5 premiers éléments

• Tableaux aléatoires :

46
47

Python
# Nombres aléatoires uniformément distribués entre 0 et 1
random_uniform = [Link](5)
print(random_uniform)

# Nombres aléatoires suivant une distribution normale standard (moyenne 0, écart-type 1)


random_normal = [Link](5)
print(random_normal)

# Nombres aléatoires entiers (min, max exclusif, taille)


random_bits = [Link](0, 2, size=10) # 10 bits aléatoires (0 ou 1)
print(random_bits)

Opérations sur les tableaux NumPy :

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.

• Opérations élément par élément :

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]

• Produit matriciel : Pour le produit matriciel, utilisez l'opérateur @ ou la fonction [Link]().

Python
matrice1 = [Link]([[1, 2], [3, 4]])
matrice2 = [Link]([[5, 6], [7, 8]])

produit_matriciel = matrice1 @ matrice2


print(f"Produit matriciel :\n{produit_matriciel}")
# [[1*5+2*7, 1*6+2*8],
# [3*5+4*7, 3*6+4*8]]
# [[19 22]
# [43 50]]
• Transposition :

Python

48
49

matrice = [Link]([[1, 2], [3, 4]])

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]))}")

Indexation et Découpage (slicing) :

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

print(data[-1]) # Dernier élément : 50

• Découpage (slicing) : [début:fin:pas]

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]]

• Indexation booléenne : Sélectionner des éléments basés sur une condition.

Python
signaux = [Link]([-0.5, 0.2, 1.1, -0.8, 0.6])
50
51

positifs = signaux[signaux > 0]


print(f"Signaux positifs : {positifs}") # [0.2 1.1 0.6]

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(a + b) # NumPy étend b à [5, 5, 5] pour l'opération : [6 7 8]

matrix = [Link]([[1, 2, 3], [4, 5, 6]]) # Forme (2, 3)


row_vector = [Link]([10, 20, 30]) # Forme (3,)

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

o Affichez le SNR en dB.


4. Génération d'une Constellation QPSK :
o Générez une séquence de 1000 symboles QPSK aléatoires. Un symbole QPSK peut être représenté par (I, Q) où

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.

3.1.3. SciPy : Boîte à outils scientifique avancé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].

[Link] : Traitement du signal numérique

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

import [Link] as plt

# Conception d'un filtre passe-bas Butterworth


ordre = 5
frequence_coupure_norm = 0.2 # Fréquence de coupure normalisée (0.0 à 1.0, où 1.0 est la fréquence de Nyquist)
b, a = [Link](ordre, frequence_coupure_norm, btype='low', analog=False)

# Création d'un signal bruité


fe = 1000 # Fréquence d'échantillonnage
t = [Link](0, 1, fe, endpoint=False)
signal_propre = [Link](2 * [Link] * 50 * t) + 0.5 * [Link](2 * [Link] * 200 * t) # Deux sinusoïdes
bruit = [Link](len(t)) * 0.5
signal_bruit = signal_propre + bruit

# 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

[Link](t, signal_propre, label='Signal Propre', linestyle='--', color='green')


[Link]('Filtrage Passe-Bas')
[Link]('Temps (s)')
[Link]('Amplitude')
[Link]()
[Link](True)
[Link]()

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}")

[Link] (ou [Link]) : Transformée de Fourier rapide (FFT)

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

# Signal composé de deux sinusoïdes


signal_test = [Link](50.0 * 2.0*[Link]*t) + 0.5*[Link](120.0 * 2.0*[Link]*t)

# Calcul de la FFT
yf = fft(signal_test)
xf = fftfreq(N, T)[:N//2] # Calcul des fréquences, ne prendre que la partie positive

# Affichage du spectre d'amplitude


[Link](figsize=(10, 5))
[Link](xf, 2.0/N * [Link](yf[0:N//2])) # 2.0/N pour la normalisation d'amplitude
[Link]('Spectre d\'Amplitude du Signal')
56
57

[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

# Distribution normale (gaussienne)


x = [Link](-3, 3, 100)
[Link](x, [Link](x, loc=0, scale=1), label='PDF N(0,1)') # Fonction de densité de probabilité
[Link](x, [Link](x, loc=0, scale=1), label='CDF N(0,1)') # Fonction de répartition cumulative
[Link]('Distribution Normale Standard')

57
58

[Link]()
[Link](True)
[Link]()

# Générer des échantillons aléatoires d'une distribution normale


echantillons_gaussiens = [Link](loc=0, scale=1, size=1000) # loc=moyenne, scale=écart-type
[Link](echantillons_gaussiens, bins=30, density=True, alpha=0.6, color='g')
[Link]('Histogramme d\'échantillons Gaussiens')
[Link]()

TD : Application de SciPy pour le traitement du signal

Objectif : Utiliser les outils de SciPy pour concevoir des filtres numériques et analyser le spectre de signaux.

1. Filtrage d'un Signal Voix Bruité :


o Simulez un signal voix simple en créant une sinusoïde de basse fréquence (ex: 300 Hz) avec une fréquence
d'échantillonnage de 8 kHz.
o Ajoutez-y un bruit à haute fréquence (ex: 3 kHz) et un bruit blanc gaussien.
o Concevez un filtre passe-bas Butterworth (ordre 4 ou 5) pour éliminer la composante haute fréquence du bruit.
Déterminez la fréquence de coupure normalisée appropriée.
o Appliquez le filtre au signal bruité.
o Tracez le signal original, le signal bruité et le signal filtré dans le domaine temporel sur le même graphique.
58
59

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.

3.1.4. Matplotlib et Seaborn : Visualisation des données

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

x = [Link](0, 10, 100)


y1 = [Link](x)
y2 = [Link](x)

[Link](figsize=(8, 5)) # Définit la taille de la figure


[Link](x, y1, label='Sinus', color='blue', linestyle='-')
[Link](x, y2, label='Cosinus', color='red', linestyle='--')

[Link]('Exemple de Signal Sinusoïdal et Cosinusoïdal')


[Link]('Temps (s)')
[Link]('Amplitude')
[Link]() # Affiche la légende
[Link](True) # Affiche la grille
[Link]() # Affiche le graphique

• 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]()

• Histogrammes ([Link]()) : Pour visualiser la distribution de données.

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))

[Link](1, 2, 1) # 1 ligne, 2 colonnes, premier graphique


[Link](temps, signal_faible)
[Link]('Signal 1 (Basse Fréquence)')
[Link]('Temps (s)')
[Link]('Amplitude')

[Link](1, 2, 2) # 1 ligne, 2 colonnes, deuxième graphique


[Link](temps, signal_fort, color='orange')
62
63

[Link]('Signal 2 (Haute Fréquence)')


[Link]('Temps (s)')
[Link]('Amplitude')

plt.tight_layout() # Ajuste automatiquement les sous-tracés


[Link]()

Seaborn : Visualisation statistique avancée

Seaborn facilite la création de graphiques statistiques attrayants et informatifs.

• Distribution de données :

Python
import seaborn as sns
import pandas as pd # Souvent utilisé avec Seaborn pour des données tabulaires

# Exemple de données de débit pour deux protocoles


data = {'Protocole': ['TCP'] * 100 + ['UDP'] * 100,
'Débit (Mbps)': [Link]([[Link](90, 5, 100), [Link](98, 2, 100)])}
df = [Link](data)

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]()

3.2. CONCEPTS AVANCES DE PROGRAMMATION POUR LA SIMULATION

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

3.2.1. Manipulation de Fichiers

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.

Lecture/Écriture de fichiers texte : .txt, .csv

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.

• Lecture/Écriture de fichiers texte simple :

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éé.")

# Lecture d'un fichier


with open('resultats_simulation.txt', 'r') as f: # 'r' pour lecture
65
66

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)

# Sauvegarde dans un fichier CSV


df_resultats.to_csv('resultats_simulation.csv', index=False) # index=False pour ne pas écrire l'index du DataFrame

66
67

print("\nFichier resultats_simulation.csv créé.")

# Lecture depuis un fichier CSV


df_lu = pd.read_csv('resultats_simulation.csv')
print("\nDataFrame lu depuis le fichier CSV :")
print(df_lu)

# Accès aux colonnes


print(f"\nBER mesuré : {df_lu['BER_mesure'].values}")

Sauvegarde/chargement d'objets Python et tableaux NumPy :

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

print(f"Signal chargé. Premiers 5 éléments : {signal_charge[:5]}")

• 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

# Sauvegarder un objet (par exemple, une instance de notre classe ModulateurBPSK)

class ParametresSimu:
def __init__(self, freq, puissance, type_mod):
[Link] = freq
[Link] = puissance
self.type_modulation = type_mod

params = ParametresSimu(2.4e9, 20, "QPSK")

with open('params_simu.pkl', 'wb') as f: # 'wb' pour écriture binaire


[Link](params, f)
print("\nObjet 'params' sauvegardé avec pickle.")
68
69

# 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

MODULE 4 : SIMULATION SYSTEME AVEC MATLAB/SIMULINK


4.1. INTRODUCTION A MATLAB

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.

4.1.1. L'Environnement de Développement MATLAB

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;

% Définition d'un vecteur (ligne par défaut)


signal_temps = [0 0.1 0.2 0.3];

% Définition d'une matrice (utilisez ';' pour séparer les lignes)


matrice_canaux = [0.8 0.1; 0.2 0.7];

% Chaînes de caractères (strings)

71
72

message = 'Bonjour, Telecom !';

% Nombres complexes (utilisez 'i' ou 'j')


impedance = 50 + 20i;

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];

C = A + B; % Addition élément par élément


D = A * B; % Produit matriciel (standard)
E = A .* B; % Multiplication élément par élément
F = A'; % Transposée

Scripts (.m files) et Fonctions :

• 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

frequence = 2.4e9; % Fréquence en Hz


vitesse_lumiere = 3e8; % m/s
longueur_onde = vitesse_lumiere / frequence;
disp(['La longueur d''onde est : ', num2str(longueur_onde), ' mètres.']);

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

fspl_db = 20 * log10(distance_km) + 20 * log10(frequence_ghz) + 92.45;


% Note: La constante peut varier légèrement selon les conventions (32.44 pour MHz et km)
% ici 92.45 pour GHz et km (20log10(3e8) - 20log10(4*pi))
end

73
74

Pour appeler cette fonction :


Matlab
>> perte_2_4ghz_1km = calculerFSPL(2.4, 1)
perte_2_4ghz_1km =
99.0556
Aide en ligne et documentation : MATLAB dispose d'une documentation très complète. Utilisez help nom_fonction dans la
Command Window pour obtenir une aide rapide, ou doc nom_fonction pour ouvrir la documentation détaillée.
TD : Prise en main de MATLAB
Objectif : Se familiariser avec l'environnement MATLAB et les opérations de base.
1. Exploration de l'Interface :
o Lancez MATLAB. Identifiez la Fenêtre de commande, le Workspace, l'Editor et le Current Folder.
o Dans la Command Window, tapez clc (pour nettoyer la commande), clear (pour nettoyer le Workspace).
2. Calculs de base :
o Calculez la longueur d'onde pour une fréquence de 5 GHz.
o Définissez deux matrices A=(1324) et B=(5768). Effectuez A+B, A×B (produit matriciel), et A∘B (produit
élément par élément). Vérifiez les résultats dans le Workspace.
3. Création de scripts et fonctions :
o Créez un script .m qui calcule la puissance en dBm d'un signal en Watts.
▪ PdBm=10log10(PWatts/1mW)

74
75

▪ Testez-le avec PWatts=0.05 W.


o Créez une fonction db2lin(val_db) qui convertit une valeur en dB en linéaire, et une fonction lin2db(val_lin) qui
fait l'inverse. Testez avec des valeurs connues.
o Sauvegardez vos scripts et fonctions dans un dossier dédié au TD et assurez-vous que ce dossier est le "Current
Folder".

4.1.2. Programmation en MATLAB pour le Traitement du Signal

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

% Génération de bruit blanc gaussien (moyenne 0, variance 1)


bruit_gaussien = randn(size(temps)); % same size as temps

• 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

% Génération de nombres aléatoires uniformément distribués entre 0 et 1


random_uniform = rand(1, 100);

Opérations sur les signaux :

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

% Conception d'un filtre passe-bas Butterworth


ordre = 5;
fc = 100; % Fréquence de coupure en Hz
Wn = fc / (frequence_ech / 2); % Fréquence de coupure normalisée par rapport à la fréquence de Nyquist
[b, a] = butter(ordre, Wn, 'low'); % b: numérateur, a: dénominateur

% 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

P2 = abs(Y/L); % Spectre double face normalisé


P1 = P2(1:L/2+1); % Spectre simple face
P1(2:end-1) = 2*P1(2:end-1); % Multiplier par 2 sauf DC et Nyquist

77
78

figure;
plot(f, P1)
title('Spectre d''Amplitude du Signal Sinusoïdal')
xlabel('Fréquence (Hz)')
ylabel('|P1(f)|')
grid on;

% Calcul de la Densité Spectrale de Puissance (DSP)


[Pxx, F] = pwelch(signal_sinus, [], [], [], frequence_ech);
figure;
plot(F, 10*log10(Pxx));
title('Densité Spectrale de Puissance du Signal')
xlabel('Fréquence (Hz)')
ylabel('DSP (dB/Hz)')
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.

TD : Traitement de signal avec MATLAB


Objectif : Utiliser les fonctions MATLAB pour générer, manipuler et analyser des signaux numériques.

78
79

1. Génération et visualisation d'un signal QPSK :


o Générez une séquence de 1000 bits binaires aléatoires.
o Mappez ces bits en symboles QPSK. Rappel :

▪ 00 -> 1/2 +j1/2

▪ 01 -> −1/2 +j1/2

▪ 10 -> −1/2 −j1/2

▪ 11 -> 1/2 −j1/2


o Ajoutez du bruit gaussien complexe (parties réelle et imaginaire indépendantes, moyenne 0, variance ajustée
pour un SNR de 10 dB) aux symboles QPSK.
2. Analyse spectrale :
o Générez un signal sinusoïdal de 100 Hz échantillonné à 1000 Hz sur 1 seconde.
o Calculez et affichez son spectre d'amplitude en utilisant la FFT. Identifiez clairement la fréquence principale.
o Ajoutez un second signal sinusoïdal de 250 Hz au premier. Recalculez et affichez le spectre du signal combiné.
3. Filtrage pour atténuer le bruit :
o Générez un signal composé d'une sinusoïde à 50 Hz et d'un bruit blanc gaussien important.
o Concevez un filtre passe-bas FIR (Finite Impulse Response) de type "fenêtre" (ex: fir1 avec une fenêtre de
Hamming) avec une fréquence de coupure qui permette d'atténuer le bruit tout en conservant le signal principal.

79
80

o Appliquez ce filtre au signal bruité.


o Tracez le signal original, le signal bruité et le signal filtré dans le domaine temporel sur le même graphique.

4.1.3. Représentation et Visualisation en MATLAB

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 :

• plot() : Le tracé de ligne standard pour des données y en fonction de x.


Matlab
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
title('Fonction Sinus');
xlabel('Angle (radians)');
ylabel('Amplitude');
grid on;
• stem() : Pour les signaux discrets, affiche des tiges.
Matlab
bits = [0 1 0 0 1 1 0];

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 :

• title(), xlabel(), ylabel(), legend() : Pour ajouter des textes descriptifs.


• color, linestyle, linewidth, marker : Options pour modifier l'apparence des tracés.
81
82

• xlim(), ylim() : Pour définir les limites des axes.


• grid on : Pour afficher une grille.

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');

4.2. INTRODUCTION A SIMULINK POUR LA SIMULATION PAR BLOCS

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.

4.2.1. L'Environnement Simulink

Ouverture et création d'un nouveau modèle :

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.

Connexion des blocs, signaux, ports :

• 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 et arrêt de la simulation :

• 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).

TP : Prise en main de Simulink

Objectif : Se familiariser avec l'environnement Simulink en créant et en exécutant un modèle simple.

1. Créer un nouveau modèle vierge.


2. Générer un signal sinusoïdal :
o Glissez un bloc Sine Wave (de Sources) dans votre modèle.

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

o Glissez un bloc Gain (de Math Operations).


o Connectez la sortie du Sine Wave à l'entrée du Gain.
o Double-cliquez sur le Gain et configurez sa valeur à 2.
4. Visualiser le signal :
o Glissez un bloc Scope (de Sinks).
o Connectez la sortie du Gain à l'entrée du Scope.
5. Exécuter la simulation :
o Réglez le Stop time à 1 seconde.
o Cliquez sur le bouton Run.
o Double-cliquez sur le Scope pour visualiser le signal d'entrée et de sortie.
6. Variations :
o Ajoutez un second Scope pour visualiser le signal de sortie du Sine Wave avant le Gain. Comparez les deux
tracés.
o Modifiez l'amplitude du Sine Wave et le Gain. Observez les changements sur le Scope.

4.2.2. Blocs Essentiels pour les Télécommunications

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.

Sources et Sinks (blocs fréquemment utilisés) :

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.

Modulations/Démodulations (Communications Toolbox / Modulators / Digital) :

• 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.

DSP System Toolbox (blocs clés) :

• Discrete FIR Filter / Discrete IIR Filter : Pour appliquer des filtres numériques.

87
88

• FFT / IFFT : Pour la transformée de Fourier rapide et son inverse.


• Buffer / Unbuffer : Pour regrouper/dégroupé des échantillons en trames.

88
89

MODULE 5 : ANALYSE ET INTERPRETATION DES RESULTATS DE SIMULATION


5.1. STATISTIQUES ET FIABILITE DES RESULTATS

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.

5.1.1. Réplication et Moyenne

• 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

0.018, 0.015, 0.017, 0.016, 0.014, 0.019];

n_replications = length(ber_replications);
mean_ber = mean(ber_replications);
std_ber = std(ber_replications); % Écart-type échantillon

% Pour un intervalle de confiance à 95%


alpha = 0.05;
z_score = norminv(1 - alpha/2); % Inverse de la CDF normale standard

% Marge d'erreur
margin_of_error = z_score * (std_ber / sqrt(n_replications));

lower_bound = mean_ber - margin_of_error;


upper_bound = mean_ber + margin_of_error;

fprintf('BER moyen : %f\n', mean_ber);


fprintf('Intervalle de confiance à 95%% : [%f, %f]\n', lower_bound, upper_bound);

% Alternative en utilisant la fonction t-test (pour petits échantillons aussi)


91
92

% [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));

5.1.3. Durée de la Simulation et Convergence

• 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.

TP : Réplication et calcul d'intervalles de confiance

Objectif : Appliquer les concepts de réplication et d'intervalles de confiance pour obtenir des résultats fiables à partir de
simulations.

1. Préparation du modèle Simulink :


o Reprenez le modèle de chaîne BPSK du TP 3.2.2 ou le projet de fin de module 3 (chaîne QPSK avec canal
AWGN).
o Assurez-vous que le bloc Error Rate Calculation sauvegarde le BER final dans le Workspace via un bloc To
Workspace.
o Configurez le Bernoulli Binary Generator pour générer un grand nombre de bits (ex: 106 bits) pour chaque
exécution.
o Gardez un Eb/N0 fixe pour ce TP (ex: 5 dB), pour pouvoir comparer les réplications entre elles.
2. Script MATLAB pour la réplication :
o Créez un script MATLAB qui exécute votre modèle Simulink plusieurs fois (ex: 30 réplications).
o Dans une boucle for, pour chaque réplication :
▪ Exécutez la commande sim() sur votre modèle Simulink.
93
94

▪ Récupérez le BER obtenu (du bloc To Workspace).


▪ Stockez chaque BER dans un tableau (ex: ber_results).
▪ Important : Pour que chaque réplication soit indépendante, vous devez réinitialiser le générateur de
nombres aléatoires de Simulink à chaque itération. Dans les paramètres de configuration du modèle, sous
Simulation Target -> Advanced Parameters -> Simulation behavior -> Initial state -> Random seed, vous
pouvez utiliser rand('seed') (pour MATLAB R2020a et versions antérieures) ou rng('shuffle') (pour les
versions plus récentes de MATLAB) pour initialiser la graine aléatoire. Ou, si votre générateur de bits a
son propre paramètre de graine, vous pouvez le modifier programmatiquement. Si vous ne réinitialisez
pas, vous obtiendrez exactement les mêmes résultats pour chaque réplication, ce qui n'est pas l'objectif !
3. Analyse des résultats :
o Après la boucle, calculez la moyenne des BER obtenus.
o Calculez l'écart-type des BER.
o Calculez et affichez l'intervalle de confiance à 95% pour le BER moyen en utilisant la formule vue en cours ou
la fonction [Link] de MATLAB ([h,p,ci] = ttest(ber_results)).
o Discutez de ce que signifie cet intervalle de confiance par rapport à une seule exécution de la simulation.

5.2. VISUALISATION AVANCEE DES RESULTATS

Des graphiques clairs et informatifs sont essentiels pour communiquer les résultats de simulation.

5.2.1. Types de Graphiques Couramment Utilisés

• Courbes de performance (x-y plots) :

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

Exemple de code MATLAB pour des tracés avancés :


Matlab
% Supposons que EbNo_vals est un vecteur de valeurs Eb/No
% Et mean_bers est un vecteur des BER moyens pour chaque Eb/No
% Et lower_ci, upper_ci sont les bornes des IC pour chaque Eb/No

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);

% Ajouter la courbe théorique


EbNo_linear = 10.^(EbNo_vals/10); % Conversion dB en linéaire
ber_theoretical = 0.5 * erfc(sqrt(EbNo_linear)); % Pour BPSK en AWGN
semilogy(EbNo_vals, ber_theoretical, 'r--', 'LineWidth', 1.5);

96
97

title('BER vs. Eb/No pour un système BPSK');


xlabel('Eb/No (dB)');
ylabel('Bit Error Rate (BER)');
legend('BER Simulé (moy.)', 'Intervalle de Confiance 95%', 'BER Théorique', 'Location', 'southwest');
grid on;
hold off;
5.2.2. Outils de Post-Traitement
• MATLAB / Python (NumPy, Pandas, Matplotlib, Seaborn) :
o Ce sont les outils par excellence pour le post-traitement des données de simulation.
o NumPy / Pandas : Pour la manipulation et l'analyse des données (filtrage, agrégation, calcul de statistiques).
o Matplotlib / Seaborn : Pour la création de graphiques de haute qualité et personnalisables.
o Ces outils permettent de transformer des données brutes (issues de To Workspace ou de fichiers de trace) en
graphiques significatifs.
• Tracé interactif et 3D :
o MATLAB et Matplotlib offrent des fonctions pour créer des tracés interactifs (zoom, rotation pour 3D) et des
visualisations 3D (surfaces, nuages de points) pour des données complexes.

5.3. INTERPRETATION ET RAPPORT DES RESULTATS

La dernière étape d'une simulation est l'interprétation des résultats et leur présentation claire dans un rapport.

97
98

5.3.1. Méthodologie du Rapport de Simulation

Un rapport de simulation bien structuré doit inclure les sections suivantes :

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

5.3.2. Présentation Efficace des Données

• 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

TABLE DES MATIERES


INTRODUCTION ........................................................................................... 2
MODULE 1 : INTRODUCTION AUX OUTILS DE CONCEPTION ET DE SIMULATION 4
1.1. ROLE ET IMPORTANCE DES OUTILS INFORMATIQUES EN TELECOMMUNICATIONS........................................... 4
1.1.1. Le besoin de la simulation : Pourquoi simuler plutôt que construire ? ................................................................... 4
1.1.2. La place des outils dans le cycle de vie de l'ingénieur télécom.............................................................................. 5
1.1.3. L'impact sur l'innovation et la compétitivité dans l'industrie ................................................................................ 6
1.2. CLASSIFICATION DES OUTILS INFORMATIQUES EN TELECOMMUNICATIONS..................................................... 7
1.2.1. Outils de Conception Assistée par Ordinateur (CAO/CAD) ................................................................................. 8
1.2.2. Outils de Simulation Système et Traitement du Signal ......................................................................................... 9
1.2.3. Outils de Simulation de Réseaux et de Protocoles ............................................................................................. 10
1.2.4. Outils de Visualisation et d'Analyse de Données ................................................................................................ 11
1.3. VUE D'ENSEMBLE DES LOGICIELS COURANTS ET METHODOLOGIES DE SIMULATION ...................................... 12
1.3.1. Présentation rapide des interfaces des logiciels phares ....................................................................................... 12
1.3.2. Méthodologies de simulation : Une approche structurée .................................................................................. 16
MODULE 2 : SIMULATION ET ÉMULATION DE RESEAUX ............................ 18
2.1. PRINCIPES DE LA SIMULATION ET DE L'ÉMULATION DE RESEAUX ..................................................................... 18
2.1.1. Pourquoi Simuler ou Émuler les Réseaux ? ........................................................................................................ 18
2.1.2. Types d'Approches : Simulation vs. Émulation .................................................................................................. 19
2.1.3. Mesures de Performance Typiques en Réseaux .................................................................................................20

101
102

2.2. CONCEPTS DE TRAFIC RESEAU ............................................................................................................................ 22


2.2.1. Modèles de Trafic ............................................................................................................................................ 22
2.2.2. Qualité de Service (QoS) et Classes de Trafic.................................................................................................... 23
2.3. OUTILS DE SIMULATION ET D'ÉMULATION DE RESEAUX ................................................................................... 24
2.3.1. Simulateurs Discrets à Événements : ns-3 et OMNeT++ (Approche Conceptuelle) ............................................ 25
2.3.2. Émulateurs de Réseaux : GNS3 et Cisco Packet Tracer ...................................................................................... 27
2.3.3. Outils de Planification Réseau : Atoll et Proteus (Présentation) ......................................................................... 32
MODULE 3 : PROGRAMMATION SCIENTIFIQUE POUR LES TELECOMMUNICATIONS 36
3.1. PYTHON POUR L'INGENIEUR TELECOM ............................................................................................................. 36
3.1.1. Introduction à l'environnement Python pour la science ..................................................................................... 36
3.1.2. NumPy : Le cœur du calcul numérique en Python ............................................................................................ 45
3.1.3. SciPy : Boîte à outils scientifique avancée ......................................................................................................... 53
3.1.4. Matplotlib et Seaborn : Visualisation des données ............................................................................................ 59
3.2. CONCEPTS AVANCES DE PROGRAMMATION POUR LA SIMULATION ............................................................... 64
3.2.1. Manipulation de Fichiers.................................................................................................................................. 65
MODULE 4 : SIMULATION SYSTEME AVEC MATLAB/SIMULINK ................. 70
4.1. INTRODUCTION A MATLAB ................................................................................................................................70
4.1.1. L'Environnement de Développement MATLAB .................................................................................................70
4.1.2. Programmation en MATLAB pour le Traitement du Signal ............................................................................... 75
4.1.3. Représentation et Visualisation en MATLAB .....................................................................................................80
4.2. INTRODUCTION A SIMULINK POUR LA SIMULATION PAR BLOCS .................................................................... 83
102
103

4.2.1. L'Environnement Simulink ................................................................................................................................ 83


4.2.2. Blocs Essentiels pour les Télécommunications ................................................................................................... 86
MODULE 5 : ANALYSE ET INTERPRETATION DES RESULTATS DE SIMULATION 89
5.1. STATISTIQUES ET FIABILITE DES RESULTATS ......................................................................................................... 89
5.1.1. Réplication et Moyenne ................................................................................................................................... 89
5.1.2. Intervalles de Confiance ................................................................................................................................... 89
5.1.3. Durée de la Simulation et Convergence ............................................................................................................ 92
5.2. VISUALISATION AVANCEE DES RESULTATS ......................................................................................................... 94
5.2.1. Types de Graphiques Couramment Utilisés....................................................................................................... 94
5.2.2. Outils de Post-Traitement ................................................................................................................................ 97
5.3. INTERPRETATION ET RAPPORT DES RESULTATS ................................................................................................. 97
5.3.1. Méthodologie du Rapport de Simulation ......................................................................................................... 98
5.3.2. Présentation Efficace des Données ................................................................................................................. 100
TABLE DES MATIERES ...................................................................................101

103

Vous aimerez peut-être aussi