Le logiciel Matlab est très populaire dans le domaine des mathématiques, de l’ingénierie et de la recherche. Il regroupe une vaste communauté de scientifiques qui l’utilisent au quotidien et qui mettent en ligne leurs propres “ToolBox”. Je développe actuellement une de ces boites à outils permettant d’analyser des orientations dans des textures, et d’effectuer des statistiques sur celles-ci. Dans cette second étape, on préfère alors à Matlab un logiciel spécifique à l’utilisation des statistiques, j’ai nommé, R !
Alors bien sûr on pourrait exporter les données de Matlab dans un fichier texte, les analyser avec R, puis les ré-exporter vers Matlab. Mais vous conviendrez qu’il serait intéressant de pouvoir faire directement appel à R à partir de Matlab ! Et le nec plus ultra d’appeler Matlab à partir de R ! C’est là qu’intervient le package bidirectionnel RMatlab dont je détaille l’installation ci-dessous.
Installation de R
La procédure est tirée du site d’Ubuntu. Si comme moi vous disposez d’Ubuntu, la première étape consiste à savoir quelle est votre version, pour cela tapez :
lsb_release -dJ’obtiens pour ma part :
Description: Ubuntu-Secure-Remix 12.04.1 LTS 31.08.2012Ainsi dans le tableau figurant à l’adresse suivante j’apprends que le nom de code de ma version est Precise Pangolin.
Ouvrez maintenant le fichier suivant :
sudo gedit /etc/apt/sources.listEditez ce fichier en rajoutant cette ligne :
deb votre.miroir.cran.prefere/bin/linux/ubuntu nom_de_code_ubuntuOù vous remplacez votre.miroir.cran.prefere par un des miroirs de cette liste, et nom_de_code_ubuntu par le nom de votre version. Ce qui permet d’ajouter le dépôt à vos sources de mise à jour. Dans mon cas j’insère donc en fin de fichier la ligne :
deb http://mirror.ibcp.fr/pub/CRAN/bin/linux/ubuntu precise/L’installation de R s’effectue alors via la commande :
sudo apt-get install r-baseInstallation du package RMatlab
Télécharger et extraire l’archive RMatlab_0.2-5.tar.gz disponible sur le site officiel.
tar xzvf RMatlab_0.2-5.tar.gzTélécharger ce patch que vous copiez dans un ficher RMatlab.patch dans le dossier RMatlab ; puis appliquez le :
cd RMatlab
patch -p1 < RMatlab.patchVous devriez normalement obtenir :
patching file src/initializeR.c
patching file src/Makefile.inEnsuite nous avons besoin de savoir où a été installé la librairie R. En général elle se trouve ici :
/usr/lib/R/Le cas échéant vous pouvez toujours rechercher le fichier principal libR.so grâce à l’une des deux commandes suivantes :
locate libR.so
sudo find . -type f -exec grep 'libR.so' {} \;De même on a besoin de savoir où se cachent les headers de R, pour cela on recherche de la même manière le fichier Rinternals.h , se trouvant généralement ici :
/usr/share/R/includeOn va retenir ces deux répertoires en les stockant dans les variables d’environnement ci-après :
export R_HOME=/usr/lib/R
export R_INCLUDE_DIR=/usr/share/R/includeMaintenant on se replace dans le dossier RMatlab et on lance la configuration :
./configureEnsuite on sort du dossier et on installe le package avec R :
cd ..
R CMD INSTALL RMatlabSi tout se passe bien l’installation doit se terminer, et vous devriez voir afficher dans la console le dossier où on a été installé RMatlab, chez moi :
R/x86_64-pc-linux-gnu-library/2.14/RMatlab/Personnellement au cours de l’installation cette erreur était levée :
mex: -argcheck not a valid option.Ceci est du au fait que cette option est apparemment supprimer de la version 2010 de Matlab. J’ai donc du l’effacer des fichiers Makefile et Makefile.in à la ligne correspondante :
MEX_ARGS=$(R_MEX_CFLAGS) @DEFINES@Une fois l’installation réussie il reste encore à bien indiquer les chemins. Pour instancier ces “path” vous pouvez exécuter le script disponible :
cd RMatlab/inst/scripts/
chmod u+x RMatlab.sh
./RMatlab.shMais je préfère personnellement les remplir à la main :
export R_HOME=/usr/lib/R
export R_SHARE_DIR=/usr/share/R/shareAppeler R à partir de Matlab
Lancer Matlab en mode console (plus commode pour repérer une éventuelle erreur) :
matlab -nojvm -nodisplayEnsuite on va signaler à Matlab où se situe les MEX du package RMatlab, qui a été installé je le rappelle ici :
R/x86_64-pc-linux-gnu-library/2.14/RMatlab/Dans Matlab on tape donc :
addpath('R/x86_64-pc-linux-gnu-library/2.14/RMatlab/mex/')On lance ensuite l’interpréteur R dans Matlab :
initializeR({'RMatlab','--vanilla','--silent'})Et enfin pour tester on appelle une fonction de R, toujours dans Matlab :
x=callR('rpois',10,3)Qui devrait, normalement, vous renvoyer :
x =
5
1
1
2
2
6
2
2
2
2Pour une description des fonctionnalités du package RMatlab se référer à la documentation.