Fonction digamma sous Matlab

Publié le par jfs889

Bonjour à tous mes amis lecteurs. Aujourd'hui je vais essayer de faire fonctionner une fonction issue d'une bibliothèque open source (gnu gsl) à l'interieur d'un logiciel propriétaire nommé MatLab. Le gros avantage de l'open source, c'est que tous le monde peut y acceder légalement. Le gros inconvénient de l'open source, c'est que cela peut-être pas simple de l'utiliser. Et pas simple du tout. Nous pourions donc ici travailler sur Octave, équivalent libre et gratuit de MatLab mais c'est sans compter sur l'absence de certaines fonctions MatLab dont je peux avoir besoin (wavedec, psi et autre gamma).

 

Je suis parti sur le logiciel MatLab qui contient une fonction psi qui calcule le résultat de la fonction digamma. Néanmoins, son implémentation est très lente, voire trop. Il est possible qu'une version codée en C soit plus véloce que la fonction incluse dans MatLab. Une fonction digamma existe dans la bibliothèque gsl et je vais tenter de l'utiliser à l'interieur de mes codes MatLab. Pour la question de l'interopérabilité de mes codes, sachez que moyennant les fonctions nommées précédement, mes codes sont fonctionnels sous Octave qui est libre. Je posterai un billet sur mes recherches dans ce sens plus tard.

 

Je travaille actuellement sous Windows 7 version 64bits. Il est important de le préciser sachant que l'implémentation de certaines fonctions vont alors differer ou devront être adaptée au système d'exploitation choisit. J'utilise Matlab R2011a version 64bits. Maintenant nous pouvons commencer à travailler. Jetons un oeil à l'ensemble des compilateurs compatibles.Nous constaton par bonheur que le dernier Visual Studio est compatible, mieux encore la version gratuite est compatible. Nous récupérons l'executable sur le site de Microsoft. Gare à choisir Visual Studio C++ 2010 Express. L'executable fait environ 3,2 Mo et se télécharge vite. Il est alors temps de l'installer. Nous laissons les options par défauts et nous acceptons les termes du contrat. Si vous ne l'acceptez pas, vous n'irez malheuresement pas très loin. Mais bon, comme j'utilise un logiciel propriétaire sur un système d'exploitation propriétaire, je dois avoir déja accepté aveuglément les même conditions. Le logiciel téléchargera 150 Mo avant de finir de s'installer, ce qui peut être long avec une petit connection wifi.

 

Je vais chercher pendant l'install la dernière version de la librairie. Pour moi, il s'agit de la version 1.15. Le fichier récupéré est compréssé mais ce n'est pas un fichier zip, il s'agit d'une compression libre tar et gzip. Le logiciel open source 7-zip est parfaitement capable de décompresser mes fichiers, c'est encore un fichier gros comme 3 Mo environ. Dedans je trouve des répertoires, des fichiers d'extension h, ma, c et même des fichiers sans extensions ! Windows ne sais rien faire avec ça et il me le montre bien, tous les fichiers partagent la même forme et couleur les rendant neutre. Nous pouvons ouvrir ses fichier grâce au menu contextuel "ouvrir avec Notepad++". Mais cela reste plutôt complexe et je ne sais pas trop quoi faire de sa. Donc quoi faire ?

 

Je recherche encore sur internet pour trouver un tuto pour gsl 1.8 et de la documentation pour gsl 1.15. Le premier m'indique de créer un dossier à la racine de mon ordianteur afin d'y déposer la librairie acquise. Je crée donc "C:\cloaque" qui constituera un "lieu malpropre et malsain" qui recevra toute sorte de fichiers que j'ouvrierai à partir de maintenant. J'esperai tomber sur une formation pour m'aider à créer un environnement de travail sain avec Visual Studio 2010, je crois que c'est loupé ici. Revenons à la documentation, il est conseillé de récuperer Python est le Windows 7.1 SDK. L'ensemble des liens que je fournis est compatible avec mon problème, je laisse chacun adapter le procédé même si je pourrais dans un futur certain réaliser une page qui s'adapterai au problème posé et qu'il faudrait tenir à jour régulièrement, pour chaque nouvelle mise à jour.

 

A la fin de l'installation de Visual Studio, le logiciel nous demande de lancer Windows Update pour obtenir les dernières mises à jour. Soit encore 388 Mo environ à récuperer. Déjà que l'installation fut longue. le SDK 7.1 lui s'installe avec les options par défaut maintenant que Visual Studio est installé. L'installateur chois de lui même d'ajouter des fichiers à l'installation de Visual Studio C++ 2010, ce qui semble correct. A propos, il faut sélectionner "I agree" pour dire que vous êtes d'accord avec le contrat. De la c'est seulement 400 Mo à récuperer, soit 4h avec la petite connection wifi. Je préfèrerai le faire chez moi à ce train la. Le PC tient le coup, les deux téléchargements plus le firefox ne semblent pas perturber outre mesure les performances. Par chance l'installation de Python, qui nécessite internet également, ne peut être faite en même temps que le SDK 7.1. Je vais pouvoir publier cette première partie et travailler à autre chose en attendant d'installer tous le fatra.

 

Durant le téléchargement, je met en place la traduction de la documentation, il devrait exister un répertoire build.vc10. Chose que je n'ai pas. Pour m'aider je trouve un autre post de blog similaire à ce que je suis en train de faire (compiler gsl sous visual studio 2010), tout en proposant des fichier non à jour. En fait, je recherche gsl-1.15-vc10.zip qui doit simplement contenr des fichier pour compiler sous visual studio. Pour le moment c'est plutot chou blanc. Quand je vous disais que l'open source n'était pas simple ...

 

C'est le néant, le vide total. Le fichier n'existe plus. Il semble exister une version enligne du dossier mais qui necessiterai que je récupère manuellement chaque morceau. Je tombe dans une impasse plus rapidement que je ne l'aurai espéré. Je reste perdu, je ne peux pas appliquer le tuto pour gsl 1.8 puisque ce dernier semble dépendre d'une archive contenant des fichier de configuration pour Visual Studio. L'avantage de la présece de ce fichier réside dans le fait qu'il est plus facile de mettre tous le reste en oeuvre. Par aquis de conscience, je termine l'installation de Windows SDK 7.1 car il est demandé par Matlab 64bits mais je n'installerai pas Python sans en avoir l'extrème nécessité.

 

Une étude de la documentation fournie avec gsl indique l'utilisation de Cygwin pour configurer et compiler gsl sous Windows. Cygwin propose des outils afin d'obtenir la sensation de travailler sous Linux alors que le système d'exploitation ne l'est pas ! Plus on charche, plus on risque de trouver, voyons sur un forum de Microsoft : nous trouvons que Visual Studio doit pouvoir créer un projet à partir d'un code existant, il est donc question d'essayer ceci. Sinon j'ai trouvé ce qui ressemble à un tuto pour passer de Unix à Visual Studio sur le site de microsoft. Pendant ce temps, les deux mises à jour ont échouées car je les ai lancées en parallèle. Soit 3 h de perdues, je vais devoir essayer chez moi avec une meilleure connection wifi. Sauf si je vais réparer le wifi sur mon Ubuntu. Mais ceci est une autre histoire.

 

Après discussion avec mon responsable, nous nous accordons pour déclarer qu'une approximation de la fonction pourrait suffire. Donc je vais commencer à regarder une approximation de la fonction psi sur l'ensemble [1/3;10/7] puisque les valeurs d'interet ne devraient pas varier de ses dernières (en théorie).

Commenter cet article