C’est une des 6 fonctions décrites dans le chapitre File Name Construction :
- filemarker : Character to separate file name and internal function name
- fileparts : Parts of file name and path
- filesep : File separator for current platform
- fullfile : Build full file name from parts
- tempdir : Name of system’s temporary folder
- tempname : Unique name for temporary file
Je les connaissais toutes sauf celle là .
- Ce que dit la doc
Voici une copie d’écran de ce qu’indique la doc R2010b de filemarker :
L’exemple cherche à lire l’aide de pdeodes qui est une sous fonction de pdepe.m.
Alors vite faite pdepe ce que ça fait , ça résout des problèmes avec une condition initiale pour les équations aux dérivées partielles (EDP) en 1D , en anglais :
Solve initial-boundary value problems for parabolic-elliptic PDEs in 1-D.
pdepe est une deux fonctions standard de MATLAB (sinon il faut la PDE Toolbox) pour traiter les équations différentielles partielles , l’autre étant pdeval qui évalue la solution numérique de l’équation partielle différentielle en utilisant la sortie de la fonction pdepe.
Pour tout savoir sur les équations différentielles, je vous renvois vers la bible:
1510 – Differential Equations in MATLAB .
- Testons l’exemple
Le truc c’est que si vous évaluez l’exemple dans la R2010b:
>>helptext = help(['pdepe' filemarker 'pdeodes'])
cela ne retourne pas du tout l’aide de la sous fonction pdeodes mais plutôt une chaine vide.
La preuve en image , j’ai édité la fonction pdepe , et comme on le voit dans le Command Window j’ai testé l’exemple en 10b.
- Investiguons
J’ai aussi testé cet exemple dans plusieurs releases MATLAB : en R2008b, R2009a, R2009b et R2010a. Dans les 6 releases j’ai toujours une chaine vide. Alors j’ai regardé quand est ce que le fichier pdepe a été modifié:
Et là ça me rassure , on voir que la donction pdepe a été modifiée courant octobre 2007. Ce qui explique que pour toutes les releases à partir de la R2008 on a le même résultat.
Pour le vérifier , j’ai alors démarré la R2006b et réédité la fonction pdepe.
On constate que la dernière modification est de 2005.
Et là en revanche l’exemple fonctionne avec MATLAB 7.3 (R2006b):
Il me restait donc plus qu’une chose a faire , comparer les 2 fichiers entre la R2006b et la R2010b pour comprendre la modif d’octobre 2007.
- Comparison Tool
Pour comparer les 2 fichiers , je vais utiliser l’outil de comparaison de MATLAB avec la fonction visdiff. Voilà les commandes que j’ai tapées en R2010b:
>> fname10b= which(‘pdepe’)
fname10b =
C:\MATLAB\SOF\r2010b\toolbox\matlab\funfun\pdepe.m
>> fname6b =’C:\MATLAB\SOF\r2006b\toolbox\matlab\funfun\pdepe.m';
>> visdiff(fname6b,fname10b)
A gauche pdepe en 6b , à droite en 10b . Et là on voit que le changement est que maintenant pdeodes est une fonction imbriquée : une nested fonction.
Voilà pourquoi filemarker ne marche plus sur cet exemple.
En effet la doc de filemarker stipule :
M = filemarker returns the character that separates a file and a within-file function name.
En 2006b , c’était le cas, pdeodes était une fonction distincte de pdepe alors que maintenant elle est imbriquée.
Évidemment comme à mon habitude j’ai remonté ce bug aux équipes support de TMW.