Introduction à Scilabjl.domec.free.fr/siteDjl_fichiers/scilab/Intro_Scilab.pdf · 2010-03-09 ·...

Preview:

Citation preview

Introductionà Scilab

Guy Lamarque

2

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…

3

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.

4

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.

5

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.

6

Exemples de boîtes à outils Scilab

�Analyse fractale.�Analyse numérique.�Calcul parallèle.�Commande.�Graphes.�Optimisation.� Statistique.� Traitement du signal.�…etc

7

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.

8

Exemple : Boîte à outilstraitement 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)

9

Exemple : Boîte à outilstraitement 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

10

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 bloc-diagramme 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.

11

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

12

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.

13

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

14

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

� Des boucles (while, for).

15

Fenêtre « éditeur de scriptes »

16

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.

17

Exemple de graphique sous Scilab

ne = 128 ;n = 4 ;x = [0:ne] * 2*%pi/n ; signal = cos (x) ; xbasc() ; plot2d (x,signal) ;

18

Insérer un graphique Scilabdans un document « word »

19

Exemple de graphique sous Scilab

ne = 128 ;n = 1 ;x = [0:ne] * 2*%pi/n ; signal = cos (x) ; xbasc() ; plot2d3 (x,signal) ;

20

Créer un histogramme sous Scilab

nc = 256 ; n = 8192 ;signal = rand (1,n,'normal') ; xbasc() ; histplot (nc,signal,style=2) ;

Nombre d’échantillons

Nombre de classes

Signal aléatoire

Tracé d’un histogramme

21

Créer un histogramme sous Scilab

22

« 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 saisieperiode = x_dialog (["nombre de periodes"],"4");

23

« Menu »

� Exemple : Boîte à choix multiplesns=x_choose(['Cosinus';'Random'],['Choix du signal'],'Fin')

24

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 ;

25

Spectre d’une somme de sinusoïdes bruitées

fourier = fft (signal_bruit,-1) ;module = abs (fourier) ;

26

Filtre passe bas (FIR)

[wft,wfm,fr]=wfir('lp',25,[.1 0],'kr',[5.6 0]);

Coefficients du filtre

Réponse en fréquence du filtre

Grille des fréquences

Nombre de coefficients

Type de filtre Fréquence de coupure

Type de fenêtre

Paramètres de la fenêtre

27

Filtre passe bas (FIR)

28

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/

29

Bibliographie

�« Une introduction à Scilab version 0.999», Bruno Pinçon

�« Scilab : une introduction version 1.0 » J. Ph. Chancelier 2004

Recommended