Archives du mot-clé r2011a

Importdata en R2012a a changé!

Pour ne citer que la doc :

To import without invoking a graphical user interface, the easiest option is to use the importdata function.

Tout à fait d’accord à condition qu’il n’y ait pas de problème de compatibilité entre les releases MATLAB.

MATLAB sous ubuntu 11.04

Beaucoup de gens actuellement upgradent leur Ubuntu pour utiliser la 11.04 (nom de code : The Natty Narwhal) qui est la quatorzième version d’Ubuntu.

  • Messages d’erreurs

MATLAB devrait vous retourner qu’il ne trouve pas la librairie libc.so.6 en référence avec oscheck.sh

Voici quelques variantes suivant que vous soyez sous 32 ou 64-bits:

oscheck.sh: 605: /lib64/libc.so.6: not found
oscheck.sh: 605: /lib/libc.so.6: not found
matlab/bin/util/oscheck.sh: 605: /lib/libc.so.6: not found
matlab/bin/util/oscheck.sh: 605: /lib64/libc.so.6: not found
/opt/matlab/bin/util/oscheck.sh: 605: /lib/libc.so.6: not found
oscheck.sh: 619: /lib/libc.so.6: not found
bin/util/oscheck.sh: 619: /lib/libc.so.6: not found

  • Solution

Pour résoudre ce problème sous 64-bit:

sudo ln -s /lib64/x86_64-linux-gnu/libc-2.13.so /lib64/libc.so.6

sous 32-bit:

sudo ln -s /lib/i386-linux-gnu/libc-2.13.so /lib/libc.so.6

  • Ubuntu 11.04 pas officiellement supporté

A noter que pour les distributions Ubuntu , la R2011a est officiellement supportée sur Ubuntu 10.04 LTS et 10.10 cf System Requirements – Release 2011a:

libc.so.6 matlab

R2011a se fait attendre !

Bon elle va sortir quand cette R2011a?!!

Là tous les jours je guette son arrivée. Depuis la R14SP2 on était habitués à avoir une nouvelle release MATLAB début mars:

  • R2010a MATLAB 7.10 5 mars 2010
  • R2009a MATLAB 7.8 6 Mars 2009
  • R2008a MATLAB 7.6 1er Mars 2008
  • R2007a MATLAB 7.4 1er Mars 2007
  • R2006a MATLAB 7.2 1er Mars 2006
  • R14SP2 MATLAB 7.0.4 17 Mars 2005

Va t’on battre le record de la R14SP2 qui était sortie mi mars? !!

whatsold

Je n’ai posté que 2 fichiers sur le File Exchange (FEX) de The MathWorks : whatsold.m que j’ai appelé « MATLAB Upgrade Utility » et emailtool_nodisplay.m que j’ai appelé « Send email using CDO ».

Le premier permet de savoir à chaque nouvelle Release de MATLAB les fonctions qui sont ou qui vont être supprimées , obsolètes , non documentées … d’où le nom de whatsold qui fait l’inverse de la fonction whatsnew shippée avec MATLAB.
Le second « Send email using CDO » permet d’envoyer des mails depuis MATLAB en utilisant votre messagerie Microsoft Outlook . Avec l’avantage que le nom de celui qui envoie le mail peut être modifié. J’en parlerai plus longuement dans un autre post.

Donc si on lance whatsold en R2010b , on aura ces informations suivantes dans un log :

***************************

1 functions « no longer supported » :

pixval: produces an error and is no longer supported. Use IMPIXELINFO

***************************

1 functions « has been removed » :

mex: This option has been removed.

***************************

7 functions « deprecated » :

mexdebug: MEXDEBUG has been deprecated, use DBMEX instead.

movefile: NOTE 5: ‘writable’ is being deprecated, but still supported for backwards

path2rc: PATH2RC is deprecated and has been renamed to SAVEPATH. PATH2RC still

helpwin: of multi-page help text. Note: this calling sequence is deprecated and

rand: syntax is still supported for backwards compatibility, but is deprecated.

randn: still supported for backwards compatibility, but is deprecated. Beginning

actxserver: The following syntaxes are deprecated and will not become obsolete. They

***************************

14 functions « is obsolete » :

sshow: (This function is obsolete. Use MAKESHOW and PLAYSHOW instead.)

isglobal: ISGLOBAL is obsolete and will be discontinued in a future

uigetfile: NOTE: THIS SYNTAX IS OBSOLETE AND WILL BE IGNORED
uigetfile: NOTE: THIS SYNTAX IS OBSOLETE AND WILL BE IGNORED.

uiputfile: NOTE: THIS SYNTAX IS OBSOLETE AND WILL BE IGNORED.
uiputfile: NOTE: THIS SYNTAX IS OBSOLETE AND WILL BE IGNORED.

wizard: WIZARD is obsolete and may be removed from future versions.

imfeature: Note: This function is obsolete and may be removed in

imview: Note: This function is obsolete and may be removed in

cremez: CREMEZ is obsolete. CREMEZ still works but may be removed in the future.

freqzplot: FREQZPLOT is obsolete. FREQZPLOT still works but may be

remez: REMEZ is obsolete. REMEZ still works but may be removed in the future.

remezord: REMEZORD is obsolete. REMEZORD still works but may be removed in the

specplot: SPECPLOT is obsolete. SPECPLOT still works but may be removed in the

spectrum: NOTE: The function form of SPECTRUM is obsolete. It still works but may

***************************

28 functions « will be removed in a future release » :

mmreader: MMREADER will be removed in a future release. Use VideoReader instead.

avifinfo: AVIFINFO will be removed in a future release. Use MMREADER

aviinfo: AVIINFO will be removed in a future release. Use MMREADER

aviread: AVIREAD will be removed in a future release. Use MMREADER

wavplay: WAVPLAY will be removed in a future release. Use AUDIOPLAYER instead.

wavrecord: WAVRECORD will be removed in a future release. Use AUDIORECORDER

codetoolsswitchyard: This function will be removed in a future release.

maxNumCompThreads: maxNumCompThreads will be removed in a future release. Please remove

exifread: will be removed in a future release. Please use IMFINFO instead.

str2rng: STR2RNG will be removed in a future release.

wk1const: WK1CONST will be removed in a future release.

wk1finfo: WK1FINFO will be removed in a future release.

wk1read: WK1READ will be removed in a future release.

wk1wrec: WK1WREC will be removed in a future release.

wk1write: WK1WRITE will be removed in a future release.

intwarning: INTWARNING will be removed in a future release.

delaunay3: DELAUNAY3 will be removed in a future release. Use DelaunayTri instead.

dsearch: DSEARCH will be removed in a future release.

griddata: these options will be removed in a future release.

griddata3: GRIDDATA3 will be removed in a future release. Use TriScatteredInterp instead.

tsearch: TSEARCH will be removed in a future release.

bessel: will be removed in a future release. Use BESSELJ instead.

findstr: FINDSTR will be removed in a future release. Use STRFIND instead.

isstr: ISSTR will be removed in a future release. Use ISCHAR instead.

setstr: SETSTR will be removed in a future release. Use CHAR instead.

str2mat: STR2MAT will be removed in a future release. Use CHAR instead.

strmatch: STRMATCH will be removed in a future release. Use STRNCMP instead.

strvcat: STRVCAT will be removed in a future release. Use CHAR instead.

***************************

60 functions « undocumented » :

functionhintsfunc: This undocumented function may be removed in a future release.

makemcode: This undocumented function may change in a future release.

capturescreen: undocumented helper function which may be removed in a future release of MATLAB

hgfeval: This undocumented helper function is for internal use.

isdfgate: This is an undocumented function and may be removed in a future release.

doclink: This function is undocumented and reserved for internal use. It may be

online_concatenator: This function is undocumented and reserved for internal use. It may be

parfor_M_check: This function is undocumented and reserved for internal use. It may be

parfor_endpoint_check: This function is undocumented and reserved for internal use. It may be

parfor_range_check: This function is undocumented and reserved for internal use. It may be

parfor_sliced_fcnhdl_check: This function is undocumented and reserved for internal use. It may be

adddatadlg: This undocumented function may be removed in a future release.

addsubplot: This undocumented function may be removed in a future release.

enableplottoolbuttons: This undocumented function may be removed in a future release.

getfigurefordesktopclient: This undocumented function may be removed in a future release.

getplottool: This undocumented function may be removed in a future release.

javaAddLsnrsToFigure: This undocumented function may be removed in a future release.

javaGetHandles: This undocumented function may be removed in a future release.

makedisplaynames: This undocumented function may be removed in a future release.

plottoolfunc: This undocumented function may be removed in a future release.

setupplotbrowser: This undocumented function may be removed in a future release.

usev6plotapi: This undocumented function may be removed in a future release

activateuimode: This function is undocumented and will change in a future release

adduimode: This function is undocumented and will change in a future release

awtcreate: This function is undocumented and will change in a future release

awtinvoke: This function is undocumented and will change in a future release

fignamer: This function is undocumented and will change in a future release

getptr: This function is undocumented and will change in a future release

getuimode: This function is undocumented and will change in a future release

hasuimode: This function is undocumented and will change in a future release

isactiveuimode: This function is undocumented and will change in a future release

javacomponent: This function is undocumented and will change in a future release

makemenu: This function is undocumented and will change in a future release

overobj: This function is undocumented and will change in a future release

remapfig: This function is undocumented and will change in a future release

setptr: This function is undocumented and will change in a future release

tabdlg: This function is undocumented and will change in a future release

tipoftheday: This function is undocumented and will change in a future release

uiclearmode: This function is undocumented and will change in a future release

uicontainer: This function is undocumented and will change in a future release

uiflowcontainer: This function is undocumented and will change in a future release

uigetmodemanager: This function is undocumented and will change in a future release

uigettool: This function is undocumented and will change in a future release

uigridcontainer: This function is undocumented and will change in a future release

uiload: This function is undocumented and will change in a future release

uimode: This function is undocumented and will change in a future release

uirestore: This function is undocumented and will change in a future release

uisuspend: This function is undocumented and will change in a future release

uitab: This function is undocumented and will change in a future release

uitabgroup: This function is undocumented and will change in a future release

uitoolfactory: This function is undocumented and will change in a future release

uitree: This function is undocumented and will change in a future release

uitreenode: This function is undocumented and will change in a future release

uiundo: This function is undocumented and will change in a future release

iptgate: This is an undocumented function and may be removed in a future release.

imuitoolsgate: This is an undocumented function and may be removed in a future release.

utctrlCheckLogNames: This function is undocumented and will change in a future release.

imageplotfunc: This is an undocumented function and may be removed in a future release.

completefreqresp: This is an undocumented function.

psdfreqvec: This undocumented function may be removed in a future release.

***************************

4 functions « Internal use only » :

indentmcode: This file is for internal use only and is subject to change without

mdbfileonpath: This file is for internal use only and is subject to change without

is2D: Internal use only. This function may be removed in a future release.

resetplotview: Internal use only. This function may be removed in a future release.

Si je relance whatsold dans la Prerelease R2011a je vais avoir un nouveau log.
Ce que j’ai fait ensuite c’est de comparer en utilisant la fonction visdiff le résultat des logs R2010b et R2011a.

On apprend ainsi :

  • Message qui apparaissait en 10 b et qu’on ne trouve plus en 11a

intwarning: INTWARNING will be removed in a future release.

  • Nouveaux messages en R2011a:

Les fonctions qui n’existent plus en R2011a :

ipttable: IPTTABLE has been removed. Use UITABLE instead.
cholinc: CHOLINC will be removed in a future release. Use ICHOL instead.
cholinc: CHOLINC(X,’inf’) will be removed in a future release.
luinc: LUINC will be removed in a future release. Use ILU instead.

Les nouvelles fonctions en R2011a non-documentées:

primitivevertexpicker: This function is undocumented and may change in a future release.
contours: This undocumented function may be removed in a future release.
makebars: This undocumented function may be removed in a future release.
figureDefaultMenubar: This function is undocumented and will change in a future release.
figureDefaultToolbar: This function is undocumented and will change in a future release.

Hum hum intéressant tout ça …
Les 2 dernières fonctions non docuementées font ce que leur nom indiquent:

figureDefaultMenubar : Create default toolbar.
figureDefaultToolbar : Create default menus.

Quant aux autres voilà ce qu’on lit dans le Header du M-file:
MAKEBARS : Make data for bar charts.
CONTOURS : Contouring over non-rectangular surface.

PRIMITIVEVERTEXPICKER un peu compliqué à mon gout pour en parler!

Comparer des dossiers avec un filtre

  • Citons les Releases Notes R2011a

Dans les releases notes de la R2011a , au chapitre Desktop Tools and Development Environment, MATLAB Version 7.12 (R2011a) on peut lire :

Filter Results in Folder Comparisons

You can now define filters to exclude unimportant differences when comparing folders. For example, you can exclude backup files or files created by a revision control system. Filters can save time when reviewing differences, especially when comparing many subfolders.

  • Exemple

Concrètement imaginons que je veuille comparer les répertoires \matlabroot\extern\examples\mex de la R2010b et de la R2011a:
sur ma machine en ligne de commande cela revient à taper:

>> visdiff(‘C:\Program Files\MATLAB\R2011a\extern\examples\mex’,’C:\Program Files\MATLAB\R2010b\extern\examples\mex’)

Pour info , ces répertoires donnent des exemples pour apprendre à écrire des MEX-files en C ou en Fortran.

et voilà ce que j’obtiens dans le Comparison Tool :

comparison tool

Seul un fichier est différent c’est le fichier binaire explore.mexw32 qui est un MEX file compilé à partir de l’exemple explore.c.
Évidemment comparer des fichiers binaires n’a pas de sens. Donc à partir de la R2011a il est possible de filtrer les résultats dans l’outil de comparaison.

  • Petite parenthèse sur explore.c

Ra je ne peux pas m’empêcher de vous parler de ce fichier qui est fort utile, non seulement pour écrire des Mex-files mais aussi pour comme son nom l’indique explorer ses variables MATLAB : structure , cellule , valeurs numériques, chaines de caractères … Par exemple imaginons que je crée la structure suivante :

>> aurelien.age=31

aurelien =

age: 31

>> aurelien.passion=’matlab’

aurelien =

age: 31
passion: ‘matlab’

Si je lance explore dans MATLAB , ce qui va marcher car il a été mexé sous Windows comme on dit dans le milieu geek , j’obtiens :

>> explore(aurelien)

————————————————
Name: prhs[0]
Dimensions: 1×1
Class Name: struct
————————————————

(1,1).age
————————————————
Dimensions: 1×1
Class Name: double
————————————————
(1,1) = 31

(1,1).passion
————————————————
Dimensions: 1×6
Class Name: char
————————————————
(1,1) matlab

C’est pas génial ça?!!!

  • Et maintenant utilisons le filtre!

En cliquant sur le bouton:

filter visdiff

apparait cette petite interface qui me permet de rajouter un filtre:

file and folders filters

je vais pouvoir ajouter mon filtre *.mexw32 en cliquant sur le bouton + :

add filter

ce qui me rajoute un troisième élément à ma liste d’extension à exclure:

mexw32

En cliquant sur OK, les changements prennent effet immédiatement. Et on voit que le mex file est à présent ignoré dans la comparaison:

matlab mex

Voilà moi je trouve ça super comme nouvelle fonctionnalité , encore une bonne raison d’upgrader en R2011a!

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 :

graymon matlab r2011a

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 212

x = -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 :

subplot colororder

Ç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 vrml

MAT-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 :

r2011a support graymon

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:

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 …

matlab answers

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 !!