Java
Index de l'article
Traitement du signal et JAVA
Page #
Toutes les pages

Le traitement du signal avec du code en Java peut être effectué de différentes façons. On peut bien sûr directement coder les fonctions, ou bien utiliser une API existante. Mais dans certains cas, l'avantage d'autres langages peut être mis à profit.
Dans cet article, il est question d'interfacer l'outil SCILAB développé par l'INRIA. On montrera comment l'installer et le configurer avec du code Java sous Eclipse. Dans un article prochain, nous verrons comment utiliser SCILAB pour localiser un son à partir de deux micros.


Scilab est un logiciel de calcul développé par l'INRIA. Pour décrire simplement ses fonctions, on peut le positionner comme concurrent de Matlab, mais possédant une licence gratuite!. Il possède par exemple les fonctionnalités suivantes :
  • Résolution de systèmes linéaires,
  • Calcul de valeurs et vecteurs propres,
  • Résolution d'équations différentielles,
  • Résolution d'équations non-linéaires,
  • Génération de nombres aléatoires,
  • Traitement du signal et plus particulièrement du son,...

Pour info, cela sera traité dans un prochain article, c'est ce dernier point qui m'a conduite vers ce logiciel.


Pour programmer des fonctions mathématiques en JAVA, nous avons trois options :
  • Recoder entièrement les fonctions dont on a besoin a partir de l'API de base de JAVA,
  • Se dégotter une API en JAVA, si possible en Open Source de DSP dont la prise en main n'est pas trop laborieuse (cela fait beaucoup de conditions),
  • Utiliser un logiciel tiers spécialisé dans le domaine des mathématiques, que l'on va faire communiquer avec le JAVA (l'opération n'est pas forcément facile, mais le gain de performance peut être notable).

Nous sommes dans ce dernier cas et je vais présenter dans cet article comment faire communiquer Scilab et Java sous windows. Scilab nous aura bien marché le travail.

Etape 1: récupérer le programme

SciLAB se télécharge sur http://www.scilab.org/. Vous pouvez en profiter pour récupérer la documentation .

Installer normalement le logiciel. Une fois que cela est fait, rendez-vous en ligne de commande dans le répertoire (pour moi) C:\Program Files\scilab-3.1.1\bin. Il contient entre autre le répertoire "javasci" qui lui même contient les fichiers :

Scilab.class
SciReal.class
BadDataArgumentException.class

En restant dans le repertoire "bin", compresser en .jar ces 3 classes :
$ jar cvf javasci.jar javasci/*.class 

Ensuite, copier toutes les dll du répertoire bin dans votre répertoire d'installation de java. Pour moi, le chemin est C:\j2sdk1.4.2_10\bin. J'ai également copié le répertoire "bin\atlas".

Ensuite il faut que vous déclariez une variable d'environnement globale SCI : SCI=Path_install_scilab.

Pour moi :
SCI=C:\Program Files\scilab-3.1.1 


Et voila vous etes prêt à travailler ! (pour la suite rendez-vous sur la page suivante)

 


 

Etape 2: Configurer Eclipse

Créer un nouveau Projet. Lors du choix des librairies, choisissez "ajouter un jar externe" puis terminer. La configuration est terminée si l'archive Jar a correctement été effectuée et si vous avec bien ajouté la variable SCI à votre système.
Pour tester, on peut utiliser un code très simple :


import javasci.* ;

class  TestMatrix {

     static private int m,n;      // taille de la matrice mxn
     static String name;          // nom donné a la matrice

     public static void main(String[] args)  {
         name = "A";
         m=4;
         n=4;

         Scilab sci = new Scilab();

         Scilab.Exec("x=loadwave(''c:\\test1.wav'');"Wink;
         Scilab.Exec("y=loadwave(''c:\\test1.wav'');"Wink;

         Scilab.Exec("correlation=corr(x,y,700)"Wink;
         Scilab.Exec("[maximum, delay]=max(correlation);"Wink;

         SciReal q = new SciReal("delay",1,10);
         q.Get();
         q.disp();     

         SciReal r = new SciReal("maximum",1,10);
         r.Get();
         r.disp();

     }

}