Le premier truc qu’on voit quand on est MATLAB geek et qu’on démarre la R2011a c’est le nouveau splash screen:
Archives du mot-clé R12SP1
Changer de répertoire rapidement (part 2)
Cet article fait suite au billet du 27 octobre 2010 : Changer de répertoire rapidement
dans lequel je présentais 4 méthodes. En voici une autre:
Nostalgie de la R12 et easter egg
Début novembre j’ai réinstallé la MATLAB 6.1 soit la Release 12 Service Pack 1 (R12SP1).
A partir du moment où vous avez une licence MATLAB , un compte MathWorks et les droits de téléchargement donnés par l’administrateur de vos licences MATLAB, il vous est en effet possible de télécharger toutes les anciennes versions de MATLAB.
Transparence
Graymon
Ah ça faisait longtemps que je n’avais pas trouvé une fonction MATLAB à mettre dans la catégorie Best-of des commandes MATLAB inutiles. Bien sûr ce n’est que mon avis !
Bon allons-y :
Graymon …Avez vous déjà entendu parlé ou utilisé cette fonction?
A part les vieux briscards de MATLAB des années 90 je ne pense pas!!
Je suis tombé dessus par hasard en parcourant la doc.
- graymon at a Glance
>> help graymon
GRAYMON Set graphics defaults for gray-scale monitors.
GRAYMON changes the default graphics properties to produce
legible displays for gray-scale monitors.
…WOW for gray-scale monitors!
Bon je doute qu’il y ait encore des gens qui bossent avec ce genre d’écran :
Alors concrètement que fait le code de graymon:
ch = get(0,’children’);
co = [.75 .5 .25]’*ones(1,3);
set(ch,’DefaultAxesColorOrder’,co)
set(0,’DefaultAxesColorOrder‘,co)
Il fait en sorte que les couleurs des lignes dans les graphiques soient toujours grises soit : [.75 .5 .25]
En MATLAB 6.1 (R12SP1) qui marche très bien d’ailleurs sous mon Windows XP Service Pack3 (SP3) , le code était différent :
ch = get(0,'children');
if isempty(ch)
fig = 0;
else
fig = [gcf 0];
end
co = [.75 .5 .25]'*ones(1,3);
set(fig,'defaultaxescolororder',co)
Alors par défaut pour rappel voici les couleurs utilisées par MATLAB:
>> get(0,’defaultaxescolororder’)
ans =
0 0 1.0000
0 0.5000 0
1.0000 0 0
0 0.7500 0.7500
0.7500 0 0.7500
0.7500 0.7500 0
0.2500 0.2500 0.2500
Cette note technique peut d’ailleurs vous servir:
How do I create lines with different colors greater than the default number of colors in MATLAB 7.7 (R2008b)?
- Une petite démo !
Faisons deux subplots avec les mêmes données. Le second subplot fera appel à notre fameux graymon!
%% premier subplot
subplot 211
x = -pi: .1 : pi;
y = sin(x);
plot(x,y)
hold on
plot(1:10)
h = title(‘Original DefaultAxesColorOrder’);
set(h,’fontweight’,’bold’)% Attention graymon arrive !
graymon%% Second subplot
subplot 212x = -pi: .1 : pi;
y = sin(x);
plot(x,y)
hold on
plot(1:10)
h = title(‘Graymon !!’);%% Mise en forme
set(h,’fontweight’,’bold’)
set(findobj(‘type’,’line’),’linewidth’,6)
Voilà ce qu’on obtient :
Ça si ce n’est pas de la démo qui tue!!
- Where is graymon ?
Donc cette fonction se trouve dans le répertoire matlabroot toolbox matlab graph3d
Alors soyons fou pour voir ce que contient ce répertoire , on va utiliser une fonction que je n’utilise jamais , la fonction what !
>> what
M-files in the current directory C:\MATLAB\SOF\r2010b\toolbox\matlab\graph3d
Contents campan colorcube hot prism white
alim campos colordef hsv rotate3d whitebg
alpha camproj colormap imapprox shading winter
alphamap camroll colormapeditor jet specular xlim
autumn camrotate cool lightangle spring ylim
bone camtarget copper lighting summer zlabel
brighten camup daspect lines surf zlim
camdolly camva diffuse material surfl
cameramenu camzoom fill3 mesh surfnorm
cameratoolbar caxis flag objbounds vga
camlight cmapeditor gray pbaspect view
camlookat cmpermute graymon pink viewmtx
camorbit cmunique hidden plot3 vrmlMAT-files in the current directory C:\MATLAB\SOF\r2010b\toolbox\matlab\graph3d
camtoolbarimages
Classes in the current directory C:\MATLAB\SOF\r2010b\toolbox\matlab\graph3d
graph3d
Donc là on retrouve des fonctions beaucoup plus connues comme mesh, colormap …
- Mon enquête
J’ai cherché s’il y avait des routines MATLAB qui appelaient graymon , je n’ai rien trouvé ni en R12SP1 , ni en R2011a.
J’ai également cherché sur le site du support MATLAB s’il y avait des bug reports ou des solutions techniques concernant graymon … idem rien trouvé , la preuve en image :
Ensuite je me suis dit que peut-être des MATLAB users avaient eu un souci sur cette fonctionnalité et avaient donc posé la question dans le MATLAB Central:
Encore une fois , c’est un échec!
Alors je n’ai pas lâché prise , je me suis dit et si le nouveau MATLAB Answers (à ne pas confondre avec le Yahoo Answers!) avait eu une question à ce sujet … suspense …
et mince rien à se mettre sous la dent mais ce n’est pas faute d’avoir cherché!!
bon beh voilà je crois qu’on a fait le tour de cette super fonction !!
Acceder au nom d’un fichier
Jeudi 27 janvier , j’ai demandé sur le MATLAB newsgroup comment on pouvait retrouver le nom d’un fichier en connaissant juste son fid (file identifier)
Je m’explique. Imaginons vous ouvrez un fichier en écriture:
fid =fopen(fullfile(matlabroot,’matlabgeek.txt’),’w+’)
Comment faire en connaissant juste la variable fid pour retrouver le nom du fichier , c’est à dire matlabgeek.txt.
Au début on m’a proposé la solution suivante:
>> filename =System.IO.DirectoryInfo(fopen(fid)).FullName
filename =
C:\MATLAB\SOF\r2010b\matlabgeek.txt
Paie ta commande de Geek!!
Seul hic, c’est que ça en marchera que sur Windows . Donc cette solution ne m’intéressait pas.
Et en plus apparemment il faut avoir .NET installé ….
Finalement c’est Loren Shure qui m’a proposé une solution toute simple et cross-platefrome, c’est de refaire un fopen sur le fid ! :
>>filename =fopen(fid)
filename =
C:\MATLAB\SOF\r2010b\matlabgeek.txt
Voilà , je voulais partager ça avec vous, aucun de mes collègues ne connaissait ce trick.
A noter que nul part dans la doc de fopen on trouve cette astuce.
Ce MATLAB trick avec fopen fonctionne dans toutes les releases MATLAB … même en R12SP1 !