Accueil - Informatique - Programmation - Langages

Matlab et NetCDF (1)

Publié le lundi 22 novembre 2004.


NetCDF est une bibliothèque permettant de manipuler et diffuser des données scientifiques avec un format auto-descriptif. La boite à outils NetCDF pour Matlab permet de manipuler simplement et efficacement des fichiers de données au format NetCDF à l’aide des opérateurs Matlab. Écrite à l’origine par Charles R. Denham, cette boite à outils n’est plus maintenue par John Evans, qui a repris le développement du site et propose sa propre boite à outils SNCTOOLS . Depuis la version R2008b, Matlab offre une gestion native des fichiers NetCDF avec des fonctions proches de la bibliothèques C et Fortran. Se reporter à l’article suivant pour l’installation et l’utilisation de SNCTOOLS.

Dernière mise à jour : 16/12/2008

Principe

2 composants doivent être installés :

Le site de la toolbox Matlab NetCDF est hébergé sous Sourceforge et la librairie porte le nom de Mexnc.

Son installation sous Windows ou Linux ne pose pas de problème particulier si l’on suit les instructions décrites sur la page de téléchargement.

Installation de MEXNC

Pour l’installation de MEXNC, récupérer l’archive des binaires correspondant à votre version de Matlab depuis le lien de téléchargement sous http://mexcdf.sourceforge.net/downloads/

Lire les fichiers README et INSTALL.

Sous Windows :

Décompresser l’archive et copier les fichiers du répertoire mexnc sous $MATLABROOT\toolbox\shared.

Copier la librairie mexnc\win32\netcdf.dll dans le répertoire $MATLABROOT\bin ou $MATLABROOT\bin\win32. Ces 2 derniers répertoires doivent se trouver dans le path windows, ce qui est le cas lorsque Matlab est correctement installé.

Rajouter dans le path Matlab, avec pathtool par exemple, le répertoire $MATLABROOT\toolbox\shared\mexnc.

A partir des version R2007, il faut renommer la dll correspondant à l’architecture de votre machine.

ex :

Tester le bon fonctionnement en exécutant la commande mexnc afin de vérifier que l’appel des fonctions de la bibliothèque NetCDF se fait bien au travers du mexfile mexnc. On doit obtenir ce qui suit sans message d’erreur.

Sous Linux :

Récupérer et installer les sources de la librairie NetCDF depuis le site d’Unidata http://www.unidata.ucar.edu/software/netcdf/ ou installer les binaires à l’aide de votre gestionnaire de paquets si ces derniers sont disponibles pour votre distribution.

Comme sous Windows, décompresser l’archive de MEXNC correspondant à votre version de Matlab et copier les fichiers du répertoire mexnc sous $MATLABROOT\toolbox\shared.

Modifier votre variable d’environnement MATLABPATH dans votre fichier .bash_profile ou .profile en rajoutant par exemple la ligne suivante :

export MATLABPATH = $MATLABPATH:
$MATLABROOT/toolbox/shared/mexnc:

Je n’ai pas encore testé la version R2008a sous Linux, mais il y a de grande chance qu’il faille réaliser la même manipulation que sous Windows pour que la librairie mexnc soit accessible depuis Matlab.
A suivre, ...

Tester en exécutant la commande :

> help mexnc

Installation de la toolbox NetCDF

Aller au bas de la page de téléchargement http://mexcdf.sourceforge.net/downloads/ et récupérer la toolbox NetCDF (le wrapper Matlab au dessus de la librairie NetCDF).

Décompresser et copier les fichiers sous :


$MATLABROOT\toolbox\shared\netcdf:
$MATLABROOT\toolbox\shared\netcdf\ncutility:
$MATLABROOT\toolbox\shared\nctype

et rajouter ces chemins dans votre path Matlab.

Sous Linux, adapter les noms de chemins :


$MATLABROOT/toolbox/shared/netcdf:
$MATLABROOT/toolbox/shared/netcdf/ncutility:
$MATLABROOT/toolbox/shared/nctype

Tester également la commande suivante :

>> tnetcdf

Il est conseillé d’éditer les scripts suivants afin d’apprendre à manipuler les fichiers NetCDF :

>> edit tnetcdf
>> edit ncdump
>> edit ncload
>> help netcdf

Lecture d’un fichier

Première chose à faire : utiliser ncdump ou ncload sur un fichier de test : test.nc

La fonction ncload charge toutes les variables contenues dans le fichier en mémoire. On peut ensuite visualiser les variables dans le "workspace".

Attention tout de même à ne pas charger des fichiers de taille trop importante, au risque de saturer la mémoire du PC sous Matlab.

>> ncload('test.nc')

On peut également ne charger qu’une ou plusieurs variable en mémoire avec la commande ncload :

>> ncload('test.nc', var1, ...)

Quelques commandes utiles pour visualiser le contenu des variables.
Ne pas hésiter à utiliser la commande help netcdf pour une description complète des instructions disponibles.

On trouvera également de la documentation sur la "Toolbox NetCDF" ici.

Problèmes connus

Sous Linux, la toolbox NetCDF ne fonctionne pas correctement si elle est installée sur un système de fichier monté avec l’attribut "noexec"

Liens utiles

USGS Scientific Software Home page