Scilab/Xcos

Scilab est un logiciel open source gratuit de calcul numérique qui propose environnement de développement pour les applications scientifiques et l’ingénierie. Scilab est téléchargeable sur le site  www.scilab.org/fr pour différents systèmes d’exploitation (GNU/Linux, MacOSX et Windows).
Pour le traitement du signal, Scilab fournit des outils pour visualiser et analyser des signaux dans les domaines temporel et fréquentiel. On retrouve par ailleurs un ensemble de fonctions permettant d’effectuer la synthèse et la simulation de filtre Numérique. Comme Scilab est aussi capable de lire et écrire des fichiers audio au format .wav ce logiciel permet d’illustrer de façon concrète des opérations de traitement numérique du signal.

Vous trouverez ci-dessous quelques exemples de script Scilab

1 – TRACÉ DE COURBES

Un petit exemple permettant de montrer l’utilisation de Scilab pour le tracé de fonctions mathématiques. Quelques options de tracés sont proposées dans le script suivant. Le tracé obtenu est conforme à l’image ci-contre.

 

// Tracé de courbes mathématiques -  Le petit poisson rouge
// poujouly.net
N=100; // Définition du nbr de point
t=0:2*%pi/(N-1):2*%pi; // création d'une variable t 
x=cos(t)+cos(2*t)/(2*sqrt(2));
y=cos(t).*sin(t); // Multiplication point à point : .*
plot(x,y,'r','LineWidth',3) // 1er tracé en rouge
xo=0.9+0.15*cos(t);yo=0.2+0.1*sin(t);
plot(xo,yo,'--b') // 2nd tracé en bleu et pointillé
title('Le petit poisson rouge','fontsize',4,'color','red')
xlabel('l''axe x');ylabel('un label pour y');
legend('ler tracé','2nd tracé',4)

2 – TRAITEMENT NUMÉRIQUE DU SIGNAL

Voici un petit  script permettant de tracer la réponse fréquentielle (frmag) d’un filtre numérique défini par sa fonction de transfert en z donnée ci-contre.
En créant un signal sinusoïdal échantillonné en entrée de ce filtre que l’on applique sur ce filtre numérique (filter) on obtient une illustration du fonctionnement en observant la sortie.

// Exemple d’utilisation de Scilab pour une introduction au traitement numérique du signal
// http://poujouly.net
// Définition d’un filtre numérique
Fe=10e3;num=[0.415 0 -0.415];den=[1 -1.68 0.917];
[H,fr]=frmag(num,den,5000); // Calcul & Tracé de la réponse fréquentielle
subplot(311);plot(fr*Fe,H);
title('reponse fréquentielle du filtre');
// Recherche des caractéristiques du filtre passe bande
[Valmax,indice]=max(H);
disp(fr(indice)*Fe,'fréquence centrale :');
disp(Valmax,'amplification max :');
// Création d’un signal sinusoidal
n=1:150;Te=1/Fe;Fo=800;E=sin(2*%pi*Fo*n*Te)
// Application du filtre & visualisation
S=filter(num,den,E)
subplot(312);plot2d3(n,E,3);
title('Signal sinusoidal (800Hz) en entrée');
subplot(313);plot2d3(n,S,5);
title('Signal en sortie du filtre');

L’exécution du script permet de renvoyer le résultat suivant dans la console et les tracés sur la fenêtre graphique.

PROCHAINEMENT DISPONIBLE :
  • Modification d’un fichier audio permettant d’illustrer les commandes wavread & wavwrite
  • Présentation de l’interface graphique XCOS