- Flashback sur la R13
Cette fonction a fait son apparition avec MATLAB 6.5.
En allant sur les releases de l’époque , on apprend que winopen a fait son apparition avec des fonctions bien connues comme:
- rmdir : Remove directory
- movefile : Move file or directory
- winopen : Open file in appropriate application (Windows only)
- xmlread : Parse XML document and return Document Object Model node
Pour les deux premières rmdir et movefile, je me demande comment les programmateurs faisaient pour supprimer un répertoire ou déplacer des fichiers !
On apprend aussi que des fonctions qui appartenaient à la Neural Network Toolbox comme:
- cell2mat : Combine a cell array of matrices into one matrix
- mat2cell : Break matrix up into a cell array of matrices
ont été inclues dans MATLAB. La pareil ça a du faire des heureux !
Et pour terminer ce flashback des releases notes de la R13 , on peut lire :
Since dynamic field names improve on the getfield and setfield functions, these two functions will eventually be removed from the MATLAB language.
mouais , 10 ans plus tard les fonctions getfield et setfield sont toujours présentes , c’est là que le mot eventually prend tout son sens !
- quand utiliser winopen :
Voilà ce que nous le dit le help de winopen :
Moi je l’utilise tous les jours pour ouvrir rapidement le répertoire courant où je suis:
>>winopen .
Autre exemple, pour ouvrir le répertoire où sont stockées les préférences de MATLAB, je tape au prompt MATLAB:
>>winopen(prefdir)
Donc en un coup de cuillère à pot, voilà mon répertoire prefdir ouvert:
Je l’utilise dans mes codes aussi pour ouvrir un fichier dans l’application désirée de Windows:
>> f = figure;
>> surf(peaks);
>> print (gcf, '-dbmp', 'myfile.bmp')
>> winopen('myfile.bmp')
Dans mon cas , la figure va s’ouvrir avec Windows Picture and Fax Viewer :
Cette note technique vous sera d’ailleurs utile pour que winopen fonctionne avec n’importe quel fichier:
How do I open a file in a choosen application from within MATLAB?
- Limitation
Comme indiqué dans ma première phrase , je l’utilise que sous Windows . Vous n’avez pas le choix d’ailleurs car le premier test effectué dans winopen.m c’est ispc
:
- Comment winopen fonctionne
Autant winopen.m est éditable dans MATLAB, autant on n’a rien à se mettre sous la dent pour comprendre la façon dont ça marche.
La dernière ligne de code est: win_open_mex(pathstr, filename);
Rien qu’en regardant les 3 dernières lettres (mex) on se dit que c’est un MEX-file (une dll) qui est appelée. Et un bon vieux which va confirmer ce doute:
>> which win_open_mex -all
C:\MATLAB\SOF\r2010b\toolbox\matlab\winfun\private\win_open_mex.mexw32 % Private to winfun
ce qui signifie en d’autre termes que le code est illisible ou protégé intellectuellement.
C’est d’ailleurs dans le répertoire toolbox\matlab\winfun\private\ qu’on découvre un autre fichier intéressant fileassoc.m que je vous laisse découvrir …
cd(fullfile(matlabroot,'toolbox','matlab','winfun','private'))