Introduction à Scilab Guy Lamarque
Pourquoi j ai utilisé Scilab? Je devais illustrer un cours de traitement du signal et j avais plusieurs solutions : Utiliser le Visual C++ Je connais le langage. J ai eu peur que les problèmes informatiques ne masquent les problèmes de traitement du signal. Utiliser MATLAB Je devais apprendre ce langage Je ne pouvais pas préparer mes cours dans mon bureau car il n y avait plus de licence disponible J ai décidé de télécharger, d installer et d apprendre Scilab Je ne suis pas un spécialiste de Scilab et encore moins de MATLAB puisque je ne connais pas MATLAB 2
Pourquoi j ai utilisé Scilab? Pour ceux qui connaissent MATLAB, Scilab est, a priori, un clone gratuit. Scilab est un logiciel libre distribué avec son code source. L utilisateur peut le recompiler et donc le personnaliser. Scilab a été développé par des chercheurs de l INRIA et l ENPC dans un environnement UNIX pour: Des applications industrielles. Des travaux de recherche. 3
Pourquoi j ai utilisé Scilab? Scilab est un langage portable : Unix Windows MacOs Scilab est aussi un langage de programmation puisque la librairie Scilab contient presque 100000 lignes de code de fonctions écrites en Scilab. C est un langage qui conduit à des programmes compacts et lisibles. Scilab comporte un langage de programmation et un interpréteur. 4
Scilab Scilab est un système ouvert, l utilisateur peut développer ses propres applications en langage Scilab. La syntaxe de Scilab est identique à Matlab pour tout ce qui concerne les manipulations sur les vecteurs et les matrices. Scilab contient des centaines de fonctions préprogrammées pour résoudre des problèmes mathématiques spécifiques. Toutes les fonctions ne sont pas écrites en scilab. Les fonctions très élémentaires et les fonctions pour lesquelles la vitesse d exécution est un facteur crucial sont codées en C ou en fortran. 5
Exemples de boîtes à outils Scilab Analyse fractale. Analyse numérique. Calcul parallèle. Commande. Graphes. Optimisation. Statistique. Traitement du signal. etc 6
Calcul numérique Résolution de systèmes linéaires. Calcul de valeurs propres et de vecteurs propres. Décomposition en valeurs singulières. Résolution d équations différentielles. Optimisation. Résolution d équations non linéaires. Génération de nombres aléatoires. Primitives d algèbre linéaire. 7
Exemple : Boîte à outils traitement du signal Diagramme de bode Transformées DFT (Discrete Fourier Transform) FFT (Fast Fourier Transform) Transformée en Z Conception de filtres FIR (Finite Impulse Response) filter Méthode des fenêtres Remez IIR (Infinite Impulse response) filter Filtres analogique (Butterworth, Chebyshev, elliptic) 8
Exemple : Boîte à outils traitement du signal Analyse spectrale Périodogramme Corrélogramme Maximum d entropy Algorithme de Levinson Filtrage optimal Filtre de Kalman Filtre de Wiener Représentation temps fréquence 9
Scicos C est l analogue de Simulink de Matlab L application Scicos est une boîte à outils dont l éditeur graphique est entièrement écrit en Scilab. Cette application est une interface blocdiagramme pour la simulation de systèmes dynamiques interconnectés. C est un outil très utilisé en milieu industriel (par exemple à EDF) pour simuler des systèmes complexes. 10
Exemples de contributions ANN : Conception de réseaux de neuronnes. FABBRI : Fonctions graphiques de haut niveau pour l imagerie. FISLABFuzzy : Commande à logique floue. FRACLAB : manipulation de fractales. FREEFEM : éléments finis 2D. GENFILT : Code assembleur pour l implémentation de filtre IIR. IMAGE : Lecture et écriture d images de différents formats. POLYTOOL : Manipulation de polynômes. TELECOM : simulation des chaînes de transmission numérique de télécommunications. etc 11
Premier niveau d utilisation En premier lieu Scilab peut s utiliser comme une calculatrice capable : D effectuer des opérations sur des vecteurs et des matrices de réels et de complexes. De visualiser graphiquement des courbes et des surfaces. 12
Fenêtre principale de Scilab On crée un vecteur On recherche le maximum On trie les éléments Il est très facile d examiner les variables 13
Deuxième niveau d utilisation Très rapidement on trouve plus simple d écrire des programme en scilab : Scripte Le langage Scilab contient : Des opérations conditionnelles (if then else elseif). Des boucles (while, for). 14
Fenêtre «éditeur de scriptes» 15
Les graphiques sous Scilab Le graphique de Scilab est basé sur des primitives graphiques dont la syntaxe d appel est souvent complexe en raison des nombreux paramètres d appel. Pour réaliser des graphiques très sophistiqués la lecture de l aide en ligne est indispensable. Une méthode simple consiste à s inspirer des nombreux exemples disponibles. En revanche, il est très simple de faire un graphique si on se contente des paramètres par défaut. 16
Exemple de graphique sous Scilab ne = 128 ; n = 4 ; x = [0:ne] * 2*%pi/n ; signal = cos (x) ; xbasc() ; plot2d (x,signal) ; 17
Insérer un graphique Scilab dans un document «word» 18
Exemple de graphique sous Scilab ne = 128 ; n = 1 ; x = [0:ne] * 2*%pi/n ; signal = cos (x) ; xbasc() ; plot2d3 (x,signal) ; 19
Créer un histogramme sous Scilab nc = 256 ; n = 8192 ; signal = rand (1,n,'normal') ; xbasc() ; histplot (nc,signal,style=2) ; Nombre de classes Nombre d échantillons Signal aléatoire Tracé d un histogramme 20
Créer un histogramme sous Scilab 21
«Boîte de saisie» Scilab permet de développer des applications interactives complètes. Scilab propose des boîtes de dialogues programmables. Exemple : Boîte de saisie periode = x_dialog (["nombre de periodes"],"4"); 22
«Menu» Exemple : Boîte à choix multiples ns=x_choose(['cosinus';'random'],['choix du signal'],'fin') 23
Exemple de traitement du signal : Génération d une somme de sinusoïdes bruitées N = 128 ; x = linspace(0,n-1,n) ; signal1 = cos (x*2*%pi*4/n) ; signal2 = cos (x*2*%pi*13/n) ; signal3 = cos (x*2*%pi*40/n) ; signal = signal1 + signal2 + signal3 ; bruit = rand(1,n) ; signal_bruit = signal + 0.5 - bruit ; 24
Spectre d une somme de sinusoïdes bruitées fourier = fft (signal_bruit,-1) ; module = abs (fourier) ; 25
Filtre passe bas (FIR) Nombre de coefficients Type de filtre Fréquence de coupure [wft,wfm,fr]=wfir('lp',25,[.1 0],'kr',[5.6 0]); Paramètres de la fenêtre Type de fenêtre Grille des fréquences Réponse en fréquence du filtre Coefficients du filtre 26
Filtre passe bas (FIR) 27
Sites à visiter Scilab home page site officiel : http://www.scilab.org/ Scilab à l ENPC (École Nationale des Ponts et Chaussées) : http://cermics.enpc.fr/scilab_new/site/ Articles traitants des possibilités de Scilab: http://www.saphir-control.fr/articles/ 28
Bibliographie «Une introduction à Scilab version 0.999», Bruno Pinçon «Scilab : une introduction version 1.0» J. Ph. Chancelier 2004 29