Archives du mot-clé compatibilité

Gérez la compatibilité descendante de vos codes MATLAB

MathWorks publie deux versions de MATLAB par an avec à chaque fois son lot de nouvelles fonctions. La version R2014b est attendue prochainement.

Si vous souhaitez diffuser vos programmes à un maximum d’utilisateurs, vous devez veillez à la compatibilité descendante (ou rétrocompatibilité) de vos codes. C’est à dire que vous devez prendre en compte le fait que certains utilisateurs ont une version moins récente de MATLAB que la vôtre.

Deux questions se posent alors :

  • jusqu’à quelle version de MATLAB assurer la compatibilité ?
  • comment déterminer ce qui casse la compatibilité descendante ?

Quelle version de MATLAB ?

Vous vous en douterez, il n’y a pas de réponse précise à cette question… Nous avons ouvert plusieurs sondages sur le forum MATLAB :

Au passage, vous pouvez toujours participer au sondage de 2014 !

En voici les résultats :

Versions utilisateurs MATLAB 2013

Sondage 2013

Versions utilisateurs MATLAB 2014

Sondage 2014

Malgré le peu de votes, on peut juger que la compatibilité devrait être gérée jusqu’aux versions R2011.

Comment déterminer ce qui casse la compatibilité descendante ?

La solution la plus efficace est d’installer la version la plus ancienne de MATLAB pour laquelle vous souhaitez assurer la compatibilité sur votre machine de développement. Votre licence MATLAB vous permet d’installer les versions plus anciennes.

A l’exécution du code, en cas de problème de compatibilité, vous rencontrez surement l’erreur Undefined function or variable ‘***’. Dans ce cas, vous devrez alors écrire un code alternatif pour gérer l’absence de cette fonctionnalité. Vous pourrez alors utiliser la fonction verLessThan présentée ci-dessous.

Si vous ne pouvez pas installer une ancienne version, il faudrait alors faire la liste de tous les changements répertoriés dans les Release Note des versions de MATLAB (voir la FAQ Où trouver la documentation des différentes versions de MATLAB en ligne ?). Tout ça risque d’être assez laborieux. Vous pouvez consulter une liste partielle de ces changements sur ce site : MatlabVersionsCompatibility.

La fonction verLessThan

La fonction verLessThan permet de tester si la version de MATLAB en cours d’utilisation est antérieure à une version donnée. Pour les numéros de version, voir la deuxième colonne du tableau donné dans la FAQ : Quelles sont les différentes versions de MATLAB ?

Prenons le cas de la fonction strjoin ajoutée avec la version R2013a (8.1) de MATLAB. Une version antérieure de MATLAB ne pourra pas l’exécuter. Vous devrez donc pas exemple écrire votre propre fonction mystrjoin et faire le teste suivant dans le code :

if verLessThan('matlab', '8.1')
    B = mystrjoin(A, ',');
else
    B = strjoin(A, ',');
end

Conclusion

Comme vous l’aurez compris, il est difficile d’assurer une compatibilité parfaite d’un code MATLAB récent avec des versions plus anciennes. J’espère au moins vous avoir sensibilisé à ce problème.

Deux conseils pour finir :

  • spécifiez la version de MATLAB que vous avez utilisée dans l’entête de votre code
  • laissez également un email pour permettre aux utilisateurs de vous contacter