08/02/2022 19:08 Introduction au traitement du signal avec Scilab genelaix.free

08/02/2022 19:08 Introduction au traitement du signal avec Scilab genelaix.free.fr/archives/iufmGE_IUFM_AIX_MARSEILLE/data/siteDR/traitement_signal/pages html/intro_scilab.htm 1/37 Introduction au traitement du signal avec Scilab Sommaire Sommaire 1. Installation 2. Règles pratiques 3. Représentation d’un signal sinusoïdal dans les domaines temporel et fréquentiel. 4. Représentation d’un signal périodique quelconque 5. Modulation d’amplitude Modulation sans porteuse Modulation d’amplitude avec porteuse Modulation en bande latérale unique 6. Modulations angulaires Rappels théoriques Visualisation temporelle d’un signal modulé en phase Signal modulé en fréquence Observation spectrale Bibliographie Annexe 1 : première approche Annexe 2 : l’affichage Annexe 3 : la sauvegarde Sauvegarde du contexte Annexe 4 : la programmation Les boucles de programmation Les fonctions Annexe 5 : polynômes et fonctions de transfert Annexe 6 : fonctions de Bessel Les outils logiciels sont devenus un élément indispensable en traitement du signal, que ce soit pour l’apprentissage ou le développement de système, en particulier depuis l’apparition des techniques numériques. Un signal numérisé peut être en effet vu comme une suite de valeurs, c’est à dire un vecteur. Un vecteur n’est qu’une matrice à une ligne ou une colonne. Dans le cas de traitement d’images par exemple, les signaux étant à deux dimensions, on arrive directement à la notion de matrices. On pourrait trouver de nombreux exemples où le signal à traiter présente une dimension supérieure encore. Il était donc naturel de se tourner vers des logiciels spécialisés en calcul matriciel, tel que Matlab (contraction de MAtrix LABoratory). Nous utiliserons pour notre part un logiciel quasiment similaire, Scilab (pour SCIentific LABoratoty), qui présente l’avantage par rapport au précédent d’être libre et gratuit. Scilab est développé par l’INRIA Rocquencourt (78). On peut le télécharger gratuitement avec sa documentation et de nombreuses applications, à l’adresse : http://www-rocq.inria.fr/scilab/ Ce logiciel est utilisable pour toute application nécessitant un calcul matriciel, de la finance à la physique. Pour de nombreuses applications spécifiques telles que le traitement du signal, un ensemble de fonctions spécialisées, appelé « boîtes d’outils » (tools box) ont été mises au point. 08/02/2022 19:08 Introduction au traitement du signal avec Scilab genelaix.free.fr/archives/iufmGE_IUFM_AIX_MARSEILLE/data/siteDR/traitement_signal/pages html/intro_scilab.htm 2/37 Une interface graphique pour la simulation dynamique, nommé SICOS (pour SCIlab Connected Object Simulator), l’équivalent du Simulink de Matlab, est disponible avec Scilab. Au cours de cette présentation, nous allons nous familiariser avec les fonctions de base de Scilab pour le traitement du signal. Certaines fonctions de base de Scilab resteront cependant peu explicitées, on pourra alors se référer à la documentation générale (en anglais) fournie avec le logiciel. De nombreux documents (en français et anglais) sont disponibles sur Internet (taper scilab avec un moteur de recherche efficace, type Google par exemple), voir la bibliographie. 1. Installation Scilab à été développé pour fonctionner sous Linux, mais fonctionne (presque) parfaitement avec windows. Nous utiliserons ici cette dernière option (même si ce n’est pas le choix le plus judicieux). Une fois Scilab téléchargé (cas de la version 2.6) à l’adresse http://www-rocq.inria.fr/scilab/, le décompresser avec winzip, puis le lancer par un double clic sur le fichier « runscilab » dans le répertoire scilab_2.6/bin (tous ces détails sont donnés dans un fichier texte associé). On créera éventuellement un raccourci sur le bureau. 2. Règles pratiques Avant toutes choses, il faut comprendre que Scilab est un langage interprété (comme le Basic) et non compilé (comme le C ou le Pascal), ce qui présente l’avantage de ne pas avoir à déclarer les variables, mais introduit une certaine lenteur (l’objectif n’est pas en général de faire du temps réel). Les premiers programmes seront écris ligne par ligne directement dans l’éditeur de Scilab ; lorsqu’on a un peu l’habitude, il est cependant plus efficace d’utiliser un éditeur de texte annexe, comme le bloc note de Windows ou WordPad, puis de faire ensuite des copier coller (attention le « ctrl V » ne fonctionne pas dans Scilab, on fera donc « clic droit » puis « paste »). On évitera d’utiliser Word, à moins de ne le configurer correctement (voir annexe 3) qui prend souvent des initiatives malheureuses (ajout de majuscules, de tabulation etc…). Passons maintenant en revue quelques règles pratiques : - pour chaque fonction, une aide est disponible en tapant « help Nom_de_la_fonction » à l’invite. - pour une fonction dont on ne connaît pas le nom exact, on peut obtenir tous les noms réservés liés à la fonction en tapant « apropos Nom_de_la fonction » , par exemple « apropos filter ». - de même la documentation complète en ligne est fournie avec le logiciel - en cas d’erreur, il est inutile de réécrire les instructions, les flèches du clavier permettant de se déplacer dans le jeu des instructions précédemment entrées ; les touches de raccourci « Ctrl C » et « Ctrl V » pour le copier coller ne fonctionnent pas sous Scilab ; utiliser le menu contextuel accessible par un clic droit dans la fenêtre. - Scilab fait la différence entre majuscules et minuscules. - bien que des boucles (for, while etc) soit utilisable, Scilab est optimisé pour faire du calcul matriciel ; on préférera donc un produit matriciel à une boucle, afin de réduire le temps de calcul et l’utilisation des ressources. - les signaux et variables créés sous Scilab peuvent être sauvegardés avec la commande « save » et rechargées avec « load » (voir les annexes pour la syntaxe exacte). - il est fortement conseillé de définir en début de programme toutes les constantes de manière littéral, afin de pouvoir modifier simplement l’une d’elle par la suite, si nécessaire. A la fin de ce document, on trouvera des annexes détaillant des points particuliers (première approche, affichage, sauvegarde etc…). On s’y réfèrera pour obtenir plus de détails. 3. Représentation d’un signal sinusoïdal dans les domaines temporel et fréquentiel. 08/02/2022 19:08 Introduction au traitement du signal avec Scilab genelaix.free.fr/archives/iufmGE_IUFM_AIX_MARSEILLE/data/siteDR/traitement_signal/pages html/intro_scilab.htm 3/37 Pour un système numérique, tel qu’un ordinateur, il ne peut y avoir que des signaux discrets. On pourra cependant voir un signal discret comme un signal continu si le pas d’échantillonnage (ou pas de calcul) est faible devant les autres grandeurs temporelles. La première étape consiste donc à définir ce pas de calcul, ainsi que la durée de l’affichage (ou durée de calcul). On définit ainsi un vecteur temps, dont le nombre d’élément est égal au nombre de points à afficher, et dont l’incrément, d’un élément au suivant, est égal au pas de calcul. Il s’agit d’un vecteur ligne. Dans l’exemple suivant, on affiche sur 16 points, par pas de 2ms, une sinusoïde d’amplitude 3 et de fréquence 100 Hz. Entrer ces commandes (sans les commentaires). // les commentaires sont précédés de deux barres // on peut utiliser indifféremment majuscules et minuscule, mais « s » n’est pas « S » // la séparation de la partie entière d’un nombre et des décimales se fait par « . » et non « , » // clear nb_pts=16 // si on ne souhaite pas voir le résultat s’afficher, placer un « ; » à la fin de l’instruction pas=2e-3 // t=pas*(0 :1 :nb_pts-1) // t est un vecteur ligne allant de 0 à nb_pts par pas de 1, multiplié par « pas » // l’incrément étant par défaut unitaire, il peut être omis ici // // amp=3 ; f=100 ; s=amp*sin(2*%pi*f*t) // les constantes prédéfinies (pi, j, e etc) sont précédées de « % » //s est un vecteur ligne, de même nombre de points que t // // initialisation des paramètres d’affichage xbasc() ; xset("font size", 4); // affichage plot2d(t,s) // affichage de s en fonction du temps // commentaires divers xtitle ("signal en fonction du temps","temps", "amplitude"); Le programme précédent nous permet d'afficher la sinusoïde en fonction du temps (voir premier graphe ci-après). Dans la même fenêtre, on peut également afficher la sinusoïde en fonction du rang de l'échantillon, en modifiant la partie affichage du programme comme suit (pour les détails sur le fonctionnement de « xsetech( ) » voir l'annexe sur l'affichage) : // initialisation de l’affichage xbasc(); xset("font size",4); // gestion du premier graphe dans la fenêtre, position (0,0), largeur 1, hauteur 1/2 xsetech([0, 0, 1,1/2]); // affichage plot2d(t,s) // commentaires divers xtitle ("signal en fonction du temps","temps", "amplitude"); // // gestion du second graphe dans la fenêtre, position (0,1/2), largeur 1, hauteur 1/2 xsetech([0, 1/2, 1,1/2]); // affichage plot2d(s) // commentaires divers xtitle ("signal en fonction du rang des échantillons","rang des échantillons", "amplitude"); 08/02/2022 19:08 Introduction au traitement du signal avec Scilab genelaix.free.fr/archives/iufmGE_IUFM_AIX_MARSEILLE/data/siteDR/traitement_signal/pages html/intro_scilab.htm 4/37 On peut noter à la vue de ces courbes, qu’un vecteur peut être représenté en fonction d’un autre (« s » en fonction de « t »), ou bien en fonction du rang de ses éléments. Dans ce dernier cas, il est important de noter que l’indice du premier élément est toujours « 1 » et non « 0 ». L’échantillonnage grossier de cette sinusoïde, nous a permis de voir s’afficher les valeurs des vecteurs t et s sans voir défiler une suite importante de nombre. Affichons maintenant une sinusoïde, d’amplitude 5V crête, de fréquence 100 Hz, sur 1000 points, avec une période uploads/Sante/ introduction-au-traitement-du-signal-avec-scilab.pdf

  • 25
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Aoû 19, 2021
  • Catégorie Health / Santé
  • Langue French
  • Taille du fichier 0.5856MB